cloudpack の がみさんです。
たいしてドキュメント読まずに使ってみた。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 |
(続く続くと書いてるが続き書けてないネタが多い…)