AppSync에서 Aurora Serverless의 mutation을 Subscribe 해 보았습니다.
4912 단어 AppSyncAuroraServerlessPubSub오로라
■ 본가 튜토리얼
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아 psyn c / ㅁ st /에서 v 굳이 / 쓰레드 lrds-레소 lゔぇrs. HTML
aws cli 최신화
aws cli가 설치되어 있다고 가정합니다.
다만 cli가 최신화되어 있지 않으면 튜토리얼대로 진행할 수 없기 때문에 만약을 위해 최신화합시다.
$ pip install awscli --upgrade --user
Aurora Serverless cluster 만들기
여기부터는 본가 튜토리얼과 거의 같습니다. 2018년 11월 현재로 도쿄 리전에서는 Aurora Serverless를 데이터스토어로 한 Appsync는 이용할 수 없는 것 같기 때문에, 버지니아 북부 리전에서 시험합니다.
aws rds create-db-cluster --db-cluster-identifier http-endpoint-test --master-username USERNAME \
--master-user-password COMPLEX_PASSWORD --engine aurora --engine-mode serverless \
--region us-east-1
AWS Secrets Manager에서 DB 자격 증명 추가
rds cluster에 액세스하기 위한 자격 증명을 작성합니다.
로컬에 "creds.json"이라는 파일 이름을 작성하고 다음과 같이 작성하십시오.
{
"username": "USERNAME",
"password": "COMPLEX_PASSWORD"
}
다음 명령을 사용하여 rds cluster에 액세스할 수 있도록 인증 관리자를 등록합니다.
aws secretsmanager create-secret --name HttpRDSSecret --secret-string ./creds.json --region us-east-1
그건 그렇고, 나는이 방법으로 작동하지 않았다 · ·
관리 콘솔에서 직접 등록해도 문제가 없었기 때문에 이번에는 그 방법으로 회피했습니다.
■ Secret Manager 관리 콘솔
htps : // 이런. 아 ws. 아마존. 코 m / 세 c ts 마나게 r / 칭찬? Region = U s-Ea ST-1 # / 칭찬
이런 느낌으로 등록했습니다.
DB& 스키마 작성
DB& 스키마를 작성합니다. 여기는 본가 튜토리얼과 거의 같습니다.
aws rds-data execute-sql --db-cluster-or-instance-arn "arn:aws:rds:us-east-1:XXXXXXXXXXXX:cluster:http-endpoint-test" \
--schema "mysql" --aws-secret-store-arn "arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:XXXXX-XXXXXX" \
--region us-east-1 --sql-statements "create DATABASE TESTDB"
aws rds-data execute-sql --db-cluster-or-instance-arn "arn:aws:rds:us-east-1:XXXXXXXXXXXX:cluster:http-endpoint-test" \
--schema "mysql" --aws-secret-store-arn "arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:XXXXX-XXXXXX" \
--region us-east-1 \
--sql-statements "create table Pets(id varchar(200), type varchar(200), price float)" --database "TESTDB"
--aws-secret-store-arn은 이전에 관리 콘솔에서 만든 보안 ARN을 지정합니다.
AppSync 스키마 만들기
Appsync 스키마를 만듭니다. 여기에서 본가와는 조금 달라 Subscription의 설정을 추가하고 있습니다. 또, subscription의 동작 확인으로 이용하지 않는 mutation은 삭제하고 있습니다.
input CreatePetInput {
type: PetType
price: Float!
}
type Mutation {
createPet(input: CreatePetInput!): Pet
}
type Pet {
id: ID!
type: PetType
price: Float
}
enum PetType {
dog
cat
fish
bird
gecko
}
type Query {
listPets: [Pet]
}
type Subscription {
createPet(id: ID, type: PetType, price: Float): Pet
@aws_subscribe(mutations: ["createPet"])
}
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
데이터 소스 지정
Appsync 데이터 소스에 Aurora를 지정합니다.
Appsync의 Schema > Data Sources > Create data sources에서 방금 만든 Aurora를 지정합니다.
Resolver 설정
Appsync 스키마와 Aurora 스키마를 매핑합니다.
Appsync의 Schema > Resolver에서 createPet의 Attach 버튼을 선택합니다. (아래 이미지에서 이미 Aurora 매핑이 완료되었으므로 "aurora"입니다.)
request mapping template 를 다음과 같이 설정합니다. 여기도 본가와 같습니다.
#set($id=$utils.autoId())
{
"version": "2018-05-29",
"statements": [
"insert into Pets VALUES ('$id', '$ctx.args.input.type', $ctx.args.input.price)",
"select * from Pets WHERE id = '$id'"
]
}
response mapping template 를 다음과 같이 설정합니다.
$utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
이것으로 설정이 종료됩니다.
그리고는 Amplify 등으로 subscribe 해 주면 mutation 을 실시간으로 검지할 수 있게 됩니다.
Reference
이 문제에 관하여(AppSync에서 Aurora Serverless의 mutation을 Subscribe 해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamizuma/items/3be8a37404a323721e87텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)