Deployment Managerを使用してバケットを作成しようとしていますが、Deploymentを作成しようとすると、次のエラーが発生します。
ERROR: (gcloud.deployment-manager.deployments.create) Error in Operation [operation-1525606425901-56b87ed1537c9-70ca4aca-72406eee]: errors:
- code: RESOURCE_ERROR
location: /deployments/posts/resources/posts
message: '{"ResourceType":"storage.v1.bucket","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"errors":[{"domain":"global","message":"[email protected]
does not have storage.buckets.get access to posts.","reason":"forbidden"}],"message":"[email protected]
does not have storage.buckets.get access to posts.","statusMessage":"Forbidden","requestPath":"https://www.googleapis.com/storage/v1/b/posts","httpMethod":"GET","suggestion":"Consider
granting permissions to [email protected]"}}'
私が正しく理解していれば、デプロイメントマネージャーは(メッセージで説明されているように)サービスアカウントを使用して、実際にすべてのリソースを作成します。 IAMをチェックし、サービスロール([email protected]
)が「編集者」としてアクセスできることを確認し、さらに確実にするために「ストレージ管理者」(storage.buckets.get
を含む)を追加しました。ただし、それでも同じエラーメッセージが表示されます。
間違ったIAMユーザーにアクセス許可を割り当てていますか/何が間違っていますか?
使用したコマンド:
gcloud deployment-manager deployments create posts --config posts.yml
私のデプロイメントテンプレート:
バケット.jinja
resources:
- name: {{ properties['name'] }}
type: storage.v1.bucket
properties:
name: {{ properties['name'] }}
location: europe-west1
lifecycle:
rule:
- action:
type: Delete
condition:
age: 30
isLive: true
labels:
datatype: {{ properties['datatype'] }}
storageClass: REGIONAL
posts.yml
imports:
- path: bucket.jinja
resources:
- name: posts
type: bucket.jinja
properties:
name: posts
datatype: posts
コードをテストして成功しましたが、問題は、サービスアカウントに権限がない別のプロジェクトに属する別のユーザーが所有するバケットを作成/更新しようとしたことだと思います。
したがって、一意である可能性が高い名前を変更して再デプロイしてみて、これで問題が解決するかどうかをお知らせください。名前をかなり長く選択するか、すでにリスクが発生しているため、これは一部のシナリオで問題になる可能性があります。
通知バケットの名前を変更する必要があることに注意してください すべてのプロジェクトで一意 すべてのユーザーの名前。
これは過度の要件のように思われるかもしれませんが、静的なWebサイトを作成したり、標準のURLでファイルを参照したりすることができます。
https://storage.googleapis.com/nomebucket/folder/nomefile
トレースエラーから、これが問題であると私は信じています。あなたは存在せず、所有していないバケットを作成しようとしています。
通知サービスアカウントから権限を削除すると、しないサービスアカウントにバケットの電源がないことを通知するメッセージが表示されます。
[email protected] does not have storage.buckets.get access to posts.
しかし、代わりに、サービスアカウントにはプロジェクトの権限がないことを示すメッセージが表示されます。
Service account [email protected] is not authorized
to take actions for project xxx. Please add [email protected]
as an editor under project xxx using Google Developers Console
通知すでに所有しているバケットを作成しようとしても問題はありません。
$ gcloud deployment-manager deployments create posts22 --config posts.yml
The fingerprint of the deployment is xxx==
Waiting for create [operation-xxx-xxx-xxx-xxx]...done.
Create operation operation-xxx-xxx-xxx-xxx completed successfully.
NAME TYPE STATE ERRORS INTENT
nomebuckettest4536 storage.v1.bucket COMPLETED []