

# 使用 Amazon CLI 和适用于 Java 的 SDK 创建和管理生命周期配置
<a name="S3OutpostsLifecycleCLIJava"></a>

您可以使用 S3 生命周期优化 Amazon S3 on Outposts 的存储容量。您可以创建生命周期规则，使对象在老化时过期或被较新版本取代。您可以创建、启用、禁用或删除生命周期规则。

有关 S3 生命周期的更多信息，请参阅[为 Amazon S3 on Outposts 桶创建和管理生命周期配置](S3OutpostsLifecycleManaging.md)。

**注意**  
创建桶的 Amazon Web Services 账户拥有该桶，并且是唯一可以创建、启用、禁用或删除生命周期规则的账户。

要使用 Amazon Command Line Interface（Amazon CLI）和 适用于 Java 的 Amazon SDK 创建和管理 S3 on Outposts 桶的生命周期配置，请参阅以下示例。

**Topics**
+ [放置 (PUT) 生命周期配置](#S3OutpostsPutBucketLifecycleConfiguration)
+ [获取（GET）S3 on Outposts 桶上的生命周期配置](#S3OutpostsGetBucketLifecycleConfiguration)

## 放置 (PUT) 生命周期配置
<a name="S3OutpostsPutBucketLifecycleConfiguration"></a>

------
#### [ Amazon CLI ]

以下 Amazon CLI 示例在 Outposts 桶上放置生命周期配置策略。此策略指定具有标记前缀 (`myprefix`) 的所有对象，并且标签在 10 天后过期。要使用此示例，请将每个 `user input placeholder` 替换为您自己的信息。

1. 将生命周期配置策略保存到 JSON 文件中。在本示例中，文件命名为 `lifecycle1.json`。

   ```
   {
       "Rules": [
           {
               "ID": "id-1",
               "Filter": {
                   "And": {
                       "Prefix": "myprefix", 
                       "Tags": [
                           {
                               "Value": "mytagvalue1", 
                               "Key": "mytagkey1"
                           }, 
                           {
                               "Value": "mytagvalue2", 
                               "Key": "mytagkey2"
                           }
                       ],
                       "ObjectSizeGreaterThan": 1000,
                       "ObjectSizeLessThan": 5000
                   }
               }, 
               "Status": "Enabled", 
               "Expiration": {
                   "Days": 10
               }
           }
       ]
   }
   ```

1. 将 JSON 文件作为`put-bucket-lifecycle-configuration` CLI 命令的一部分提交。要使用此命令，请将每个 `user input placeholder` 替换为您自己的信息。有关此命令的更多信息，请参阅《Amazon CLI 参考》中的 [put-bucket-lifecycle-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/put-bucket-lifecycle-configuration.html)。

   ```
   aws s3control put-bucket-lifecycle-configuration --account-id 123456789012 --bucket arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outposts-bucket --lifecycle-configuration file://lifecycle1.json
   ```

------
#### [ SDK for Java ]

以下适用于 Java 的 SDK 示例在 Outposts 桶上放置生命周期配置。此生命周期配置指定具有标记前缀 (`myprefix`) 的所有对象，并且标签在 10 天后过期。要使用此示例，请将每个 `user input placeholder` 替换为您自己的信息。有关更多信息，请参阅《Amazon Simple Storage Service API 参考》中的 [PutBucketLifecycleConfiguration](https://docs.amazonaws.cn/AmazonS3/latest/API/API_control_PutBucketLifecycleConfiguration.html)。

```
import com.amazonaws.services.s3control.model.*;

public void putBucketLifecycleConfiguration(String bucketArn) {

    S3Tag tag1 = new S3Tag().withKey("mytagkey1").withValue("mytagkey1");
    S3Tag tag2 = new S3Tag().withKey("mytagkey2").withValue("mytagkey2");

    LifecycleRuleFilter lifecycleRuleFilter = new LifecycleRuleFilter()
            .withAnd(new LifecycleRuleAndOperator()
                    .withPrefix("myprefix")
                    .withTags(tag1, tag2))
                    .withObjectSizeGreaterThan(1000)
                    .withObjectSizeLessThan(5000);

    LifecycleExpiration lifecycleExpiration = new LifecycleExpiration()
            .withExpiredObjectDeleteMarker(false)
            .withDays(10);

    LifecycleRule lifecycleRule = new LifecycleRule()
            .withStatus("Enabled")
            .withFilter(lifecycleRuleFilter)
            .withExpiration(lifecycleExpiration)
            .withID("id-1");

    LifecycleConfiguration lifecycleConfiguration = new LifecycleConfiguration()
            .withRules(lifecycleRule);

    PutBucketLifecycleConfigurationRequest reqPutBucketLifecycle = new PutBucketLifecycleConfigurationRequest()
            .withAccountId(AccountId)
            .withBucket(bucketArn)
            .withLifecycleConfiguration(lifecycleConfiguration);

    PutBucketLifecycleConfigurationResult respPutBucketLifecycle = s3ControlClient.putBucketLifecycleConfiguration(reqPutBucketLifecycle);
    System.out.printf("PutBucketLifecycleConfiguration Response: %s%n", respPutBucketLifecycle.toString());

}
```

------

## 获取（GET）S3 on Outposts 桶上的生命周期配置
<a name="S3OutpostsGetBucketLifecycleConfiguration"></a>

------
#### [ Amazon CLI ]

以下 Amazon CLI 示例获取 Outposts 桶上的生命周期配置。要使用此命令，请将每个 `user input placeholder` 替换为您自己的信息。有关此命令的更多信息，请参阅《Amazon CLI 参考》中的 [get-bucket-lifecycle-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/get-bucket-lifecycle-configuration.html)。

```
aws s3control get-bucket-lifecycle-configuration --account-id 123456789012 --bucket arn:aws:s3-outposts:<your-region>:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outposts-bucket
```

------
#### [ SDK for Java ]

以下适用于 Java 的 SDK 示例获取 Outposts 桶的生命周期配置。有关更多信息，请参阅《Amazon Simple Storage Service API 参考》中的 [GetBucketLifecycleConfiguration](https://docs.amazonaws.cn/AmazonS3/latest/API/API_control_GetBucketLifecycleConfiguration.html)。

```
import com.amazonaws.services.s3control.model.*;

public void getBucketLifecycleConfiguration(String bucketArn) {

    GetBucketLifecycleConfigurationRequest reqGetBucketLifecycle = new GetBucketLifecycleConfigurationRequest()
            .withAccountId(AccountId)
            .withBucket(bucketArn);

    GetBucketLifecycleConfigurationResult respGetBucketLifecycle = s3ControlClient.getBucketLifecycleConfiguration(reqGetBucketLifecycle);
    System.out.printf("GetBucketLifecycleConfiguration Response: %s%n", respGetBucketLifecycle.toString());

}
```

------