AWS Stop Function에서 5분 후 DynamoDB 데이터 삭제
7364 단어 stepfunctionsAWSPython
개시하다
API Gateway+Lambda+DynamoDB를 이용하여 웹 API를 개발합니다.
DynamoDB에 Lambda 함수를 사용하여 데이터를 쓰고 5분 후에 삭제해야 합니다.
그래서 다음과 같은 방법을 생각해 봤습니다.
・DyanamoDB의 TTL 기능을 사용한 후 5분 후 데이터 삭제
• 데이터가 기록된 람보다에서 5분 후 삭제된 람보다로 호출
DynamoDB의 TTL 기능
먼저 다이나모DB의 TTL 기능을 조사했는데 TTLでは有効期限から48時間以内に期限切れのアイテムを削除します
기록이 있어 5분 뒤에 삭제해야 하는 설정은 불가능하다.
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/howitworks-ttl.html
AWS Step Function 사용
이어서 토론データを書き込むLambdaからデータを削除するLambdaを呼び出す
.
조사 결과 AWS Stop Function 을 사용하면 가능하다.실현해 보아라.
데이터를 쓰는 Lambda 함수 만들기
점심시간은 파이썬 3.8. DynamoDB와 StpFunction에 대한 접근권을 부여한다.
다음 Lambda 함수를 사용하여 DynamoDB에 데이터를 쓰고 State Machine을 호출합니다.
State Machine에 userId를 매개 변수로 전달합니다.
lambda_function.pyimport boto3
client = boto3.client('stepfunctions')
dynamoDB = boto3.resource('dynamodb')
def lambda_handler(event, context):
# データを書き込むテーブル
table = dynamoDB.Table('test')
# 呼び出すStateMachine
stateMachineArn = 'StateMachineのARN'
# DynamoDBにデータを書き込む
table.put_item(Item={'data': data})
# StateMachineを呼び出す
input = {"parameters":{"userId":userId}}
client.start_execution(
stateMachineArn = stateMachineArn,
input = json.dumps(input)
)
return {'statusCode': 200, 'body': "writeData"}
State Machine 만들기
다음 정의에 따라 State Machine을 만듭니다.
State Machine에서 Lambda에 액세스할 수 있는 권한을 주십시오.{
"StartAt": "wait_5_miutes",
"States": {
"wait_5_miutes": {
"Type": "Wait",
"Seconds": 300,
"Next": "deleteData"
},
"deleteData": {
"Type": "Task",
"Resource": "データを削除するLambda関数のARN",
"Parameters": {
"userId.$": "$.parameters.userId"
},
"End": true
}
}
}
데이터 삭제를 위한 Lambda 함수 만들기
다음 Lambda 함수를 실행하여 State Machine에서 데이터를 제거합니다.
lambda_function.pyimport boto3
dynamoDB = boto3.resource('dynamodb')
table = dynamoDB.Table('test')
# StateMachineで呼び出される
def lambda_handler(event, context):
# StateMachineからパラメータを受け取る
userId = event['userId']
# 削除対象のデータを探す
searchResult = table.get_item(Key={'userId': userId})
if "Item" in searchResult:
table.delete_item(Key={'userId': userId})
return {'statusCode': 200, 'body': "deleteData"}
끝말
AWS Stop Function을 사용하여 구현DynamoDBへデータを書き込み、そのデータを5分後に削除する
되었습니다.
더 복잡한 처리를 할 수 있기 때문에 해보고 싶어요.
참고 자료
https://qiita.com/ketancho/items/147a141c9f8a6de86c97
https://aws.amazon.com/jp/getting-started/hands-on/create-a-serverless-workflow-step-functions-lambda/
Reference
이 문제에 관하여(AWS Stop Function에서 5분 후 DynamoDB 데이터 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/se_fy/items/dfe5bccaca80deebfa1b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 다이나모DB의 TTL 기능을 조사했는데
TTLでは有効期限から48時間以内に期限切れのアイテムを削除します
기록이 있어 5분 뒤에 삭제해야 하는 설정은 불가능하다.https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/howitworks-ttl.html
AWS Step Function 사용
이어서 토론データを書き込むLambdaからデータを削除するLambdaを呼び出す
.
조사 결과 AWS Stop Function 을 사용하면 가능하다.실현해 보아라.
데이터를 쓰는 Lambda 함수 만들기
점심시간은 파이썬 3.8. DynamoDB와 StpFunction에 대한 접근권을 부여한다.
다음 Lambda 함수를 사용하여 DynamoDB에 데이터를 쓰고 State Machine을 호출합니다.
State Machine에 userId를 매개 변수로 전달합니다.
lambda_function.pyimport boto3
client = boto3.client('stepfunctions')
dynamoDB = boto3.resource('dynamodb')
def lambda_handler(event, context):
# データを書き込むテーブル
table = dynamoDB.Table('test')
# 呼び出すStateMachine
stateMachineArn = 'StateMachineのARN'
# DynamoDBにデータを書き込む
table.put_item(Item={'data': data})
# StateMachineを呼び出す
input = {"parameters":{"userId":userId}}
client.start_execution(
stateMachineArn = stateMachineArn,
input = json.dumps(input)
)
return {'statusCode': 200, 'body': "writeData"}
State Machine 만들기
다음 정의에 따라 State Machine을 만듭니다.
State Machine에서 Lambda에 액세스할 수 있는 권한을 주십시오.{
"StartAt": "wait_5_miutes",
"States": {
"wait_5_miutes": {
"Type": "Wait",
"Seconds": 300,
"Next": "deleteData"
},
"deleteData": {
"Type": "Task",
"Resource": "データを削除するLambda関数のARN",
"Parameters": {
"userId.$": "$.parameters.userId"
},
"End": true
}
}
}
데이터 삭제를 위한 Lambda 함수 만들기
다음 Lambda 함수를 실행하여 State Machine에서 데이터를 제거합니다.
lambda_function.pyimport boto3
dynamoDB = boto3.resource('dynamodb')
table = dynamoDB.Table('test')
# StateMachineで呼び出される
def lambda_handler(event, context):
# StateMachineからパラメータを受け取る
userId = event['userId']
# 削除対象のデータを探す
searchResult = table.get_item(Key={'userId': userId})
if "Item" in searchResult:
table.delete_item(Key={'userId': userId})
return {'statusCode': 200, 'body': "deleteData"}
끝말
AWS Stop Function을 사용하여 구현DynamoDBへデータを書き込み、そのデータを5分後に削除する
되었습니다.
더 복잡한 처리를 할 수 있기 때문에 해보고 싶어요.
참고 자료
https://qiita.com/ketancho/items/147a141c9f8a6de86c97
https://aws.amazon.com/jp/getting-started/hands-on/create-a-serverless-workflow-step-functions-lambda/
Reference
이 문제에 관하여(AWS Stop Function에서 5분 후 DynamoDB 데이터 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/se_fy/items/dfe5bccaca80deebfa1b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import boto3
client = boto3.client('stepfunctions')
dynamoDB = boto3.resource('dynamodb')
def lambda_handler(event, context):
# データを書き込むテーブル
table = dynamoDB.Table('test')
# 呼び出すStateMachine
stateMachineArn = 'StateMachineのARN'
# DynamoDBにデータを書き込む
table.put_item(Item={'data': data})
# StateMachineを呼び出す
input = {"parameters":{"userId":userId}}
client.start_execution(
stateMachineArn = stateMachineArn,
input = json.dumps(input)
)
return {'statusCode': 200, 'body': "writeData"}
{
"StartAt": "wait_5_miutes",
"States": {
"wait_5_miutes": {
"Type": "Wait",
"Seconds": 300,
"Next": "deleteData"
},
"deleteData": {
"Type": "Task",
"Resource": "データを削除するLambda関数のARN",
"Parameters": {
"userId.$": "$.parameters.userId"
},
"End": true
}
}
}
import boto3
dynamoDB = boto3.resource('dynamodb')
table = dynamoDB.Table('test')
# StateMachineで呼び出される
def lambda_handler(event, context):
# StateMachineからパラメータを受け取る
userId = event['userId']
# 削除対象のデータを探す
searchResult = table.get_item(Key={'userId': userId})
if "Item" in searchResult:
table.delete_item(Key={'userId': userId})
return {'statusCode': 200, 'body': "deleteData"}
AWS Stop Function을 사용하여 구현
DynamoDBへデータを書き込み、そのデータを5分後に削除する
되었습니다.더 복잡한 처리를 할 수 있기 때문에 해보고 싶어요.
참고 자료
https://qiita.com/ketancho/items/147a141c9f8a6de86c97
https://aws.amazon.com/jp/getting-started/hands-on/create-a-serverless-workflow-step-functions-lambda/
Reference
이 문제에 관하여(AWS Stop Function에서 5분 후 DynamoDB 데이터 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/se_fy/items/dfe5bccaca80deebfa1b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(AWS Stop Function에서 5분 후 DynamoDB 데이터 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/se_fy/items/dfe5bccaca80deebfa1b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)