読まずに食べるSQSとDynamoDB 作成編
たいしてドキュメント読まずに使ってみた。LANG=ja坊にはつらい。
CLI縛りしたら思った以上に時間がかかった。訓練なので早く慣れてドヤ顔したいです。
VPC内のEC2を使ってSQSとDynamoDBを操作するのが目的です。
- SQS作成
まず何も考えずキュー名だけ指定して作成します
orenomac$ aws sqs create-queue --queue-name myque { "QueueUrl": "https://ap-northeast-1.queue.amazonaws.com/075069182505/myque" }
- キューにデータ送信のテスト
orenomac$ aws sqs send-message --queue-url https://ap-northeast-1.queue.amazonaws.com/075069182505/myque --message-body "hello" { "MD5OfMessageBody": "5d41402abc4b2a76b9719d911017c592", "MessageId": "9b75a443-9634-44b3-b256-61fecd9b5b95" }
- 受信テスト
orenomac$ aws sqs receive-message --queue-url https://ap-northeast-1.queue.amazonaws.com/075069182505/myque { "Messages": [ { "Body": "hello", "ReceiptHandle": "cOJv9qrD9XLVlpsfwYn3xZcjweCMUMv59bttg4XRtlIsl9M5ZYp/nYOcfC58iNk2MMznJT7H9EQmrLllzyQfgmma8jvyDOjbU0rni/x/6spEg+SgsYeQXRbbyVTo/Q1jvZiEthtihOcf78S+i5Ww1oMRYu3qSynS0lgTUvqGM+apOBrYWftrdOxOc09XT96JvcGh6jTO1OwywUprvYpLR8bBXGxXvBdx0i03TskBNoa6XEe4XPPql8iwCgyi4udrjtjvY9pWnYiR3HSc4MtBJp6tEwVjc/Bc++lvngkb9qh/0uwAmNbeHQ==", "MD5OfBody": "5d41402abc4b2a76b9719d911017c592", "MessageId": "9b75a443-9634-44b3-b256-61fecd9b5b95" } ] }
- DynamoDB作成
カラム名 | 型 | KeySchema |
---|---|---|
DataA | String | HASH |
DataB | String | RANGE |
orenomac$ aws dynamodb create-table --table-name test \ --attribute-definitions AttributeName=DataA,AttributeType=S AttributeName=DataB,AttributeType=S \ --key-schema AttributeName=DataA,KeyType=HASH AttributeName=DataB,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 { "TableDescription": { "AttributeDefinitions": [ { "AttributeName": "DataA", "AttributeType": "S" }, { "AttributeName": "DataB", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 1, "ReadCapacityUnits": 1 }, "TableSizeBytes": 0, "TableName": "test", "TableStatus": "CREATING", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "DataA" }, { "KeyType": "RANGE", "AttributeName": "DataB" } ], "ItemCount": 0, "CreationDateTime": 1396884278.079 } }
- テストデータのPut
orenomac$ aws dynamodb put-item --table-name test --item \ > '{ quote> "DataA": {"S": "hello"}, quote> "DataB": {"S": "Dynamo"} quote> }'
- テストデータのget
orenomac$ aws dynamodb get-item --table-name test --key '{"DataA": {"S":"hello"},"DataB": {"S": "Dynamo"}}' { "Item": { "DataA": { "S": "hello" }, "DataB": { "S": "Dynamo" } } }
- VPC作成
サブネット一つのVPCを作ります。
orenomac$ aws cloudformation create-stack --stack-name MyVPC --template-body file://01_vpc.json { "StackId": "arn:aws:cloudformation:ap-northeast-1:075069182505:stack/MyVPC/45267420-be61-11e3-8444-5088487ec896" }
- IAM Roleの作成
複数のIAM Roleを一つのEC2へ割り当てることはできません。
DynamoDBとSQSのリソースを全て利用できるIAM Roleを作成します。
dynamo_sqs-role.json
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dynamodb:*", "sqs:*" ], "Effect": "Allow", "Resource": "*" } ] }
エラーが出た。プリンシパルが必要?...('A`)
orenomac$ aws iam create-role --role-name dynamo_sqs-role --assume-role-policy-document file://dynamo_sqs-role.json A client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: AssumeRole policy must contain principals.
諦めてコンソールから上記IAM Roleを作成しました。
- EC2起動
EC2の異名を持ちSQSとDynamoDBを自在に操る高貴なるCentOSを起動します。
まだ
今度も続く。
*以下調べなきゃいけない所
AWSサービス | やること |
---|---|
SQS | SQS操作するときのIAMアクセス権限 |
SQS | SQS Permission |
SQS | Dead Letter Queue機能 |
SQS | CloudWatchで取得できるメトリクス |
DynamoDB | DynamoるときのIAMアクセス権限 |
DynamoDB | アクセス権限 |
DynamoDB | バックアップ・リストア |
DynamoDB | CloudWatch |
(続く続くと書いてるが続き書けてないネタが多い...)