1

CloudFormationを使用して、新しく作成したテーブルにTTLを有効にしたいとします。私は無駄に次のことを試してみた:CloudFormation - DynamoDBテーブル作成のTTLを有効にする

{ 
    "Resources" : { 
    "mytable" : { 
     "Type" : "AWS::DynamoDB::Table", 
     "Properties" : { 
     "TableName" : "my_table", 
     "ProvisionedThroughput" : {"ReadCapacityUnits" : 1, "WriteCapacityUnits" : 5}, 
     "KeySchema" : 
     [ 
      {"AttributeName" : "user_email", "KeyType" : "HASH"}, 
      {"AttributeName" : "datetime", "KeyType" : "RANGE"} 
     ], 
     "AttributeDefinitions": [ 
      {"AttributeName" : "user_email", "AttributeType" : "S"}, 
      {"AttributeName" : "datetime", "AttributeType" : "S"} 
     ], 
     "TimeToLiveDescription": { 
      "AttributeName": "expire_at", 
      "TimeToLiveStatus": "ENABLED" 
     } 
     } 
    } 
} 

私はthis docから得られTimeToLiveDescriptionを、使用していました。リンクはAWS CLIの例であることが

Encountered unsupported property TimeToLiveDescription 

答えて

4

CloudformationのDynamoDB TTLサポートが現在存在します。参照:

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-timetolivespecification.html

例:

{ 
    "TableName": "MyTable", 
    "AttributeDefinitions": [ 
    { 
     "AttributeName": "Uid", 
     "AttributeType": "S" 
    } 
    ], 
    "KeySchema": [ 
    { 
     "AttributeName": "Uid", 
     "KeyType": "HASH" 
    } 
    ], 
    "ProvisionedThroughput": { 
    "ReadCapacityUnits": "1", 
    "WriteCapacityUnits": "1" 
    }, 
    "TimeToLiveSpecification": { 
    "AttributeName": "TimeToLive", 
    "Enabled": "TRUE" 
    } 
} 
0

:スタックを作成しようとすると

は私に次のエラーが発生しました。

DynamoDB TTLの設定のサポートはまだクラウドに追加されていません。

1

AWSのTTL Dynamo DBは、新しい機能(2017年2月にリリース)であり、Jaredの回答と同様、AWS Cloudformationではまだサポートされていないようです。その間に、あなたが行うことができること - 同じCloudflowテンプレートで新しいEC2インスタンスを起動する場合 - あなたがリンクしたaws cliコマンドを(UserDataの下で)実行し、TTL aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"を更新してあなたのダイナモdbリソース(mytable)。 (また、インスタンスがこのリソースを更新できるようにするために必要なポリシーでIAMロールを使用していることを確認してください)。

+0

私はCLIは、私は新しいEC2インスタンスを起動していないよ場合でも、テンプレートにコマンドを実行することはできますか? –

+0

CLIコマンドは、ある種のホストや環境で実行される必要があります.cliコマンドを実行するラムダ関数を追加することで、他の代替方法がわかります。ここでもう少し詳しく読むことができます:https://alestic.com/2016/11/aws-lambda-awscli/ 他の方法は分かりません。 – ivanji

+0

私が知っている唯一の他の方法(テンプレート内ではない)は、Jenkisのようなビルドサービス/サーバーを使用してCloudform Stackを起動し、ビルドサーバーから必要なawsコマンドを実行することです。 (サーバーにAWS cliなどをインストールする必要があります)。 – ivanji

関連する問題