複数のタグとプレフィックスを持つフィルターを使用するルールを使用して、lifecycle_configuration を S3 バケットに配置したいと考えています。
put_lifecycle_configuration
フィルターが 1 つのタグまたは 1 つのプレフィックスのみを使用する場合は成功しますが、 を使用して複数のタグまたはタグとプレフィックスを結合Aws::S3::Errors::MalformedXML (The XML you provided was not well-formed or did not validate against our published schema)
しようとすると、AWS から応答が返されます。and:
(編集:以下のErmiyaの回答ごとにハッシュprefix:...
内に入れます)and:
私は何を間違っていますか?
これが私のルールです:
aws_s3_backup_prefix = "production_backup" # this is fetched from ENV in real life
rule_expire_yearly_after_10y = {
id: "Expire 1 January backups after 10 years",
filter: {
and: {
prefix: aws_s3_backup_prefix,
tags: [
{ key: 'date-month-day', value: '1'},
{ key: 'date-month-num', value: '1'}
]
}
},
status: 'Enabled',
expiration: {
days: 3650
}
}
そして、これを使用してライフサイクル構成を配置する方法は次のとおりです。
# aws_client is a valid Aws::S3::Client
# I have access to aws_s3_backup_bucket_name
# I can get and put a simple lifecycle_configuration (no 'and:') with this client and bucket
aws_client.put_bucket_lifecycle_configuration({
bucket: aws_s3_backup_bucket_name,
lifecycle_configuration: {
rules: [ rule_expire_yearly_after_10y ]
}
})
構成:
- ルビー2.6.6
- aws-sdk-コア 3.109.1
- aws-sdk-s3 1.103.0