AmplifyでIdentify Labelsをデプロイ時に起こるエラー「Parameters: [access, type] 〜」の対処
はじめに
Amplifyの初心者コンテンツを探していて、ハンズオン形式でリリースまで体験できるAmplify Vue Workshopをやってみたら、最高でした❗️Amplifyで開発する時に使用頻度の高いAWSの他サービスもハンズオンに盛り込まれているので学ぶことが多かったです。アーキテクチャは下記になります。
本記事はworkshopの6-3.画像内の物体検知 の手順で上手くいかなかった事象とその解決策について触れます。
画像内の物体検知の手順で起こったトラブル
物体検知の機能を追加
ec2-user:~/environment/vite-project (main) $ amplify add predictions
追加のオプションは下記の通り(workshopの手順と同じ)
✔ Please select from one of the categories below · Identify
✔ What would you like to identify? · Identify Labels
✔ Provide a friendly name for your resource · identifyLabels9fe3733f
✔ Would you like to use the default configuration · Advanced Configuration
✔ What kind of label detection? · Identify labels
✔ Who should have access? · Auth users only
Successfully added resource identifyLabels9fe3733f locally
このあと機能追加を反映させるためにampliify push
を実施すると
Deployment failed.
Deploying root stack viteproject [ ========================---------------- ] 3/5
amplify-viteproject-dev-〇〇〇〇 AWS::CloudFormation::Stack UPDATE_ROLLBACK_COMPLETE
predictionstranslateText… AWS::CloudFormation::Stack UPDATE_COMPLETE
predictionsidentifyLabels… AWS::CloudFormation::Stack CREATE_FAILED
authviteprojectee〇〇 AWS::CloudFormation::Stack UPDATE_COMPLETE
Deployed predictions translateText… [ ======================================== ]
Deployed predictions identifyLabels… [ ========================================
🛑 The following resources failed to deploy:
Resource Name: predictionsidentifyLabels… (AWS::CloudFormation::Stack)
Event Type: create
Reason: Parameters: [access, type] must have values
🛑 Resource is not in the state stackUpdateComplete
Name: predictionsidentifyLabels… (AWS::CloudFormation::Stack), Event Type: create, Reason: Parameters: [access, type] must have values, IsCustomResource: false
Learn more at: https://docs.amplify.aws/cli/project/troubleshooting/
…
amplify pushが失敗します。。
トラブルの解決策
まず、原因ですが、エラーメッセージReason: Parameters: [access, type] must have values
というメッセージから推測すると、AmplifyでIdentify Labelsを追加する際に、必須の「access」と「type」というパラメータが設定されていないことが原因と考えられます。
パラメータの設定ファイルはamplify add predictions
コマンドで作成されたamplify/backend/predictions/<your-predictions-resource>/parameters.json
ファイルになります。中身を確認すると確かに「access」と「type」が未設定となっていました。
{
"resourceName": "identifyLabelsde〇〇",
"identifyPolicyName": "identifyPolicyde〇〇",
"authRoleName": {
"Ref": "AuthRoleName"
},
"unauthRoleName": {
"Ref": "UnauthRoleName"
},
"adminAuthProtected": "DISALLOW",
"adminGuestProtected": "DISALLOW",
"identifyType": "identifyLabels"
}
「6-2. テキストの翻訳」ではparameters.jsonに正しくパラメータが設定されていたのですが、なぜか「6-3. 画像内の物体検知」では設定されていませんでした。
再現手順は分からなかったのですが、同様の事象は発生しているようです。
根本的な解決に至ってはいないが、一時的な解決策として「access」と「type」のパラメータには下記の値を設定すれば解決できるそうです。
"access": "auth",
"type": "ALL"
設定した値の補足ですが
- "auth"で認証済みユーザーのみ操作可能
- "ALL"でIdentify Labelsのすべての機能を利用可能
パラメータを設定後、再度amplify push
を実行したら解決できることを確認できました。
Discussion