💬

AmplifyでIdentify Labelsをデプロイ時に起こるエラー「Parameters: [access, type] 〜」の対処

2023/07/02に公開

はじめに

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」が未設定となっていました。

json
{
    "resourceName": "identifyLabelsde〇〇",
    "identifyPolicyName": "identifyPolicyde〇〇",
    "authRoleName": {
        "Ref": "AuthRoleName"
    },
    "unauthRoleName": {
        "Ref": "UnauthRoleName"
    },
    "adminAuthProtected": "DISALLOW",
    "adminGuestProtected": "DISALLOW",
    "identifyType": "identifyLabels"
}

「6-2. テキストの翻訳」ではparameters.jsonに正しくパラメータが設定されていたのですが、なぜか「6-3. 画像内の物体検知」では設定されていませんでした。
再現手順は分からなかったのですが、同様の事象は発生しているようです。
https://github.com/aws-amplify/amplify-cli/issues/12208

根本的な解決に至ってはいないが、一時的な解決策として「access」と「type」のパラメータには下記の値を設定すれば解決できるそうです。

"access": "auth",
"type": "ALL"

設定した値の補足ですが

  • "auth"で認証済みユーザーのみ操作可能
  • "ALL"でIdentify Labelsのすべての機能を利用可能

パラメータを設定後、再度amplify pushを実行したら解決できることを確認できました。

Discussion