AWS Lambdaでpythonを使用して、DynamoDBテーブルからアイテムを配置/取得するにはどうすればよいですか?
Node.jsでは、これは次のようになります。
dynamodb.getItem({
"Key": {"fruitName" : 'banana'},
"TableName": "fruitSalad"
}, function(err, data) {
if (err) {
context.fail('Incorrect username or password');
} else {
context.succeed('yay it works');
}
});
必要なのはpythonと同等です。
Boto3の使用(Python用の最新のAWS SDK)
あなたはそれをインポートします
import boto3
次に、経由でクライアントを呼び出します
dynamodb = boto3.client('dynamodb')
アイテムの取得の例
dynamodb.get_item(TableName='fruitSalad', Key={'fruitName':{'S':'Banana'}})
プットアイテムの例
dynamodb.put_item(TableName='fruitSalad', Item={'fruitName':{'S':'Banana'},'key2':{'N':'value2'}})
「S」は文字列値を示し、「N」は数値です
他のデータ型については http://boto3.readthedocs.org/en/latest/reference/services/dynamodb.html#DynamoDB.Client.put_item を参照してください
完全な例:
import boto3
def lambda_handler(event, context):
client = boto3.client('dynamodb')
for record in event['Records']:
# your logic here...
try:
client.update_item(TableName='dynamo_table_name', Key={'hash_key':{'N':'value'}}, AttributeUpdates={"some_key":{"Action":"PUT","Value":{"N":'value'}}})
except Exception, e:
print (e)
「update_item」または「put_item」をいつ使用するかを決定する必要があることに注意してください。
'update_item'を使用すると、同じハッシュ/範囲を持つレコードが1つだけになるようにします。レコードが存在する場合、このレコードを更新できます。それ以外の場合は作成します
http://boto3.readthedocs.org/en/latest/reference/services/dynamodb.html#DynamoDB.Client.update_item
最新のAWS SDKを使用する
import boto3
def lambda_handler(event, context):
# this will create dynamodb resource object and
# here dynamodb is resource name
client = boto3.resource('dynamodb')
# this will search for dynamoDB table
# your table name may be different
table = client.Table("dynamoDB")
print(table.table_status)
table.put_item(Item= {'id': '34','company': 'Microsoft'})
AWSを使用している場合、このコードサンプルを使用できます。このラムダ関数へのアクセス許可を与える必要があるのは、 link