ask-cli에서 alexa skill을 배포할 때 자동 생성된 IAM 역할에서 DynamoDB를 사용할 수 있도록 합니다.
도전
alexa developer Console의 테스트 화면에서 호출해 보았지만, INVALID_RESPONSE가 되어 버린다.
AskSdk.DynamoDbPersistenceAdapter Error: Could not create table (テーブル名)
exports.handler = skillBuilder
.addRequestHandlers(
LaunchRequestHandler,
(中略)
)
.withTableName("テーブル名") // セッション情報を保存するDynamoDB上のテーブル名
.withAutoCreateTable(true) // テーブルが無ければスキルから作成する
.addErrorHandlers(ErrorHandler)
.lambda();
해결책
설정 파일인것을 소일시간 수색했지만 보이지 않기 때문에 AWS 콘솔에서 직접 IAM을 괴롭히고 해결.
(1) IAM 콘솔에서 자동 생성 된 역할을 찾고 권한 부여
AWS 콘솔 > IAM > 역할 을 열고 해당 alexa 스킬 이름의 머리에 "ask-lambda-"가 붙은 역할을 찾습니다.
역할 이름 클릭
> "정책 첨부"버튼을 클릭
>「정책의 필터」입력란에 「Dynamo」라고 입력
>「AmazonDynamoDBFullAccess」에 체크
> "정책 첨부"를 클릭
(2) Lambda 함수를 실행하여 테이블에 기록되는지 확인
Lambda 함수의 테스트 이벤트를 실행합니다.
오류가 발생하지 않는지 확인. (다른 오류는 나왔지만 (w)
AWS의 DynamoDB 콘솔에서 테이블이 생성되고,
테이블에 세션 정보가 기록되어 있는지 확인.
(3) Todo
Lambda 함수의 콘솔로 돌아가서 다시 읽으면 DynamoDB뿐만 아니라 EC2 등도 권한도 붙어 있다. IAM 역할로 AmazonDynamoDBFullAccess를 선택하면 이렇게 된다. 원래 DynamoDB에 대해서도 full이 아니어도 좋다. 나중에 줄인다.
이상으로!
Reference
이 문제에 관하여(ask-cli에서 alexa skill을 배포할 때 자동 생성된 IAM 역할에서 DynamoDB를 사용할 수 있도록 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sitopp/items/ea618a8346e090f1b668텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)