SAM CLI+DynamoDB Local 환경 구축 단계 설명
local_app - dynamodb -- docker-compose.yml
| |_ docker - dynamodb
|_ sam-app
구축 절차DynamoDB Local 준비
docker-compose.yml
준비 version: '3.8'
services:
dynamodb-local:
command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
image: "amazon/dynamodb-local:latest"
container_name: dynamodb-local
ports:
- "8000:8000"
volumes:
- "./docker/dynamodb:/home/dynamodblocal/data"
working_dir: /home/dynamodblocal
networks:
- lambda-local
networks:
lambda-local:
external: true
2. Docker network 제작 + 컨테이너 시작 docker network create lambda-local
docker-compose up
※ localhost: 8000시 컨테이너가 작동합니다.3.dynamodb-admin
http://localhost:8001
방문4. 테스트표 작성
test-table
※ 테이블 설정은 다음과 같습니다. {
"AttributeDefinitions": [
{
"AttributeName": "name",
"AttributeType": "S"
},
{
"AttributeName": "date",
"AttributeType": "S"
}
],
"TableName": "test-table",
"KeySchema": [
{
"AttributeName": "name",
"KeyType": "HASH"
},
{
"AttributeName": "date",
"KeyType": "RANGE"
}
],
"TableStatus": "ACTIVE",
"CreationDateTime": "2022-01-16T05:43:16.767Z",
"ProvisionedThroughput": {
"LastIncreaseDateTime": "1970-01-01T00:00:00.000Z",
"LastDecreaseDateTime": "1970-01-01T00:00:00.000Z",
"NumberOfDecreasesToday": 0,
"ReadCapacityUnits": 3,
"WriteCapacityUnits": 3
},
"TableSizeBytes": 116,
"ItemCount": 3,
"TableArn": "arn:aws:dynamodb:ddblocal:000000000000:table/test-table"
}
SAM 프로젝트 준비1. SAM 프로젝트 제작
local_응용 디렉토리에서 다음 명령을 실행합니다.
sam init --runtime python3.8
※ HelloworldFunction을 사용하세요.다른 것도 기본 설정으로 만듭니다.2. 각종 설정, 코드 변경
app.py
test-table
에 등록name
과date
.import json
import boto3
import string
import random
from datetime import datetime
def lambda_handler(event, context):
# DynamoDB接続設定
session = boto3.session.Session()
region = session.region_name
dynamodb = boto3.resource('dynamodb', region_name = region, endpoint_url = "http://dynamodb-local:8000")
# テーブルを取得
table = dynamodb.Table('test-table')
# name(文字数5の英数字文字列)
dat = string.digits + string.ascii_lowercase + string.ascii_uppercase
name = ''.join([random.choice(dat) for i in range(5)])
# 日時
date = datetime.utcnow().isoformat()
# 登録アイテム
item = {'name': name, 'date': date}
# テーブル登録
table.put_item(
Item=item
)
return {
"statusCode": 200,
"body": json.dumps(item),
}
requirements.txt
boto3
추가 requests
boto3
template.yml
/item
, Method 변경post
~省略~
Events:
HelloWorld:
Type: Api
Properties:
Path: /item
Method: post
3. API 시작sam local start-api --docker-network lambda-local
동작 확인 POST /item HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Content-Length: 2
{}
{
"name": "d4jlG",
"date": "2022-01-16T06:00:45.853215"
}
Reference
이 문제에 관하여(SAM CLI+DynamoDB Local 환경 구축 단계 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KWS_0901/items/9557b6f96cca16ee9bab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)