AppSync에서 Aurora Serverless의 mutation을 Subscribe 해 보았습니다.

AppSync가 Aurora Serverless에 대응한 것 같지만, 튜토리얼의 소스에 subscription의 설정이 없었기 때문에 시험해 보았다.

■ 본가 튜토리얼
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 을 실시간으로 검지할 수 있게 됩니다.

좋은 웹페이지 즐겨찾기