Cloud SpannerのエミュレータにDBツールでローカルから接続する(DBeaver)
はじめに
- Cloud Spanner使いたいけれどお高いので、なるべく使いたくない。
- そんな時はローカルに立てたエミュレータでOKじゃない?
- SpannerってCLIじゃないと接続できないの?
- DBeaverで接続できるらしい
- DBeaverだとエミュレータに接続できてないっぽい? 👈いまここ
ということでDBeaverからCloud Spannerのエミュレータに接続したいと思います。
事前準備
Cloud SDK をインストール
gcloud の更新
gcloud components update
エミュレータの起動
gcloud emulators spanner start Executing: docker run -p 127.0.0.1:9010:9010 -p 127.0.0.1:9020:9020 gcr.io/cloud-spanner-emulator/emulator:1.2.0 [cloud-spanner-emulator] Unable to find image 'gcr.io/cloud-spanner-emulator/emulator:1.2.0' locally [cloud-spanner-emulator] 1.2.0: Pulling from cloud-spanner-emulator/emulator ・・・ [cloud-spanner-emulator] Status: Downloaded newer image for gcr.io/cloud-spanner-emulator/emulator:1.2.0 [cloud-spanner-emulator] 2021/08/18 11:27:52 gateway.go:140: Cloud Spanner emulator running. [cloud-spanner-emulator] 2021/08/18 11:27:52 gateway.go:141: REST server listening at 0.0.0.0:9020 [cloud-spanner-emulator] 2021/08/18 11:27:52 gateway.go:142: gRPC server listening at 0.0.0.0:9010 # これで起動完了
DBeaverのインストール
割愛
接続タイプの選択
Cloud Spannerを選択
接続情報の設定
プロジェクト、インスタンス、データベースをそれぞれ設定
例)test-project、test-instance、test-database
private keyは未設定でOK
ドライバの設定
[ドライバのプロパティ]タブを開く
初回はドライバのインストールが必要なのでダウンロード
終わると下記の画面になるので、[ドライバのプロパティ]の[autoConfigEmulator]の値をtrueに変更
テスト接続してエラーが出なければOK
参考サイト
Cloud Spanner エミュレータの使用 | Google Cloud
Use DBeaver with Cloud Spanner and Cloud Spanner Emulator | Google Cloud - Community
おまけ
テーブル作成
・SQLエディタを開く
インスタンス名右クリック>SQLエディタ>SQLエディタ
・作成するCREATE文を入力して実行
・自動的には画面に表示されないので、作成したスキーマを選択してF5
※スキーマ名右クリックで[更新]でも可
無事作成できています。
おまけ2
・gcloudでエミュレータを参照したい場合は以下のコマンドを実行します。
エミュレータの構成を作成して有効にする
gcloud config configurations create emulator gcloud config set auth/disable_credentials true gcloud config set project your-project-id gcloud config set api_endpoint_overrides/spanner http://localhost:9020/
・構成の確認
gcloud config configurations list NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION default False アカウント プロジェクト名 asia-northeast1-b asia-northeast1 emulator True your-project-id
emulatorの[IS_ACTIVE]がTrueになっているのでemulator側の構成が有効になっているのがわかります。
・インスタンスの作成
gcloud spanner instances create test-instance2 ` --config=emulator-config --description="Test Instance" --nodes=1
test-instance2が作られ、接続もできます。
・エミュレータとデフォルトの設定切り替え
gcloud config configurations activate [emulator | default]
Cloud SQLにDBツールでローカルから接続する(A5:SQL Mk-2)
はじめに
Cloud SQLにローカルからA5:SQL Mk-2(DBツール)で接続する方法を紹介します。
今回はツールとしてA5:SQL Mk-2を選択していますが、他のツールでも問題ありません。
基本的に下記の公式ドキュメントを元に進めれば問題なく接続できると思います。 外部アプリケーションから Cloud SQL に接続する | Cloud SQL for MySQL | Google Cloud
環境
Windows10
事前準備
1. API を有効化する
2. ローカルマシンにプロキシ クライアントをインストールする
https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe?hl=ja インストールというよりはexeファイルをダウンロードするだけのようです。
Windows64ビットのタブを開いてexeのリンクをクリックし保存します。
cloud_sql_proxy.exeとして、以下に保存しました。(保存場所は任意)
C:/Users/<ユーザ名>/.gcp/cloud_sql_proxy.exe
3 サービス アカウントを作成する
3-1 Google Cloud Console の [サービス アカウント] ページに移動します。
[サービス アカウント] ページに移動
3-2 Cloud SQL インスタンスを含むプロジェクトを選択します。
3-3 [サービス アカウントを作成] をクリックします。
3-4 [サービス アカウントの作成] ダイアログで、わかりやすいサービス アカウント名を指定します。
ここでは CloudSqlAccessとします。
3-5 [役割] で、次のいずれかの役割を選択します。
ここでは権限が最低限の[Cloud SQL クライアント]を選択
※これらの役割が表示されない場合、Google Cloud ユーザーに resourcemanager.projects.setIamPolicy 権限がない可能性があります。
権限を確認するには、Google Cloud Console の IAM ページにアクセスし、自分のユーザー ID を検索します。
3-6 サービスアカウントの作成
上記の設定で作成します。
3-7 [新しい秘密鍵の提供] をクリックし、キーのタイプが JSON であることを確認します。
作成したらサービスアカウントの一覧から作成したサービスアカウントをクリック
[鍵の追加]をクリック
[新しい鍵の作成]をクリック
3-8 [作成] をクリックします。
秘密鍵ファイルがマシンにダウンロードされます。
秘密鍵ファイルは、別の場所に移動できます。
安全な場所に鍵ファイルを保管してください。-
プロキシクライアントと同じ場所に保存しました。 C:/Users/<ユーザ名>/.gcp/cloudSqlAccess.json
4 プロキシの起動
以下のコマンドでプロキシを起動します。
ここでは、
C:/Users/<ユーザ名>/.gcp/cloud_sql_proxy.exe -instances=<インスタンス接続名>=tcp:13306 -credential_file=C:/Users/<ユーザ名>/.gcp/cloudSqlAccess.json
5 DBツールで接続情報の設定
5-1 [データベースの追加と削除]をクリック
5-2 [追加]をクリック
5-3 [MySQL/MariaDB(直接接続)]をクリック
5-4 接続情報を設定
- ホスト名: 127.0.0.1 (ローカルループバックアドレス)
- ポート番号: 13306 (先ほどプロキシ起動で指定したポート)
- ユーザID: Cloud SQLで作成したユーザ名
- パスワード: Cloud SQLで作成したユーザのパスワード
- データベース: Cloud SQLで作成したDB名
5-5 [テスト接続]をクリック
成功したらOK
GitHub ActionでCI環境やってみる
はじめに
今更ながらGitHub ActionでのCI環境作ってみる。
そもそも一から作ったことがないので、
改めて公式みながらやってみましょう。
初めに行っておくと今回は基本的な動作のみで、CI構築まで至らず。
CI構築は次の機会に。
公式が結構充実していて、クイックスタートやガイドを読み進めると基本的なパターンはわかりそうです。
ここで書いた内容もほぼ公式の抜粋となっております。
準備
リポジトリを用意する。(新規でも既存のでもOK)
ブランチ作っておきます。作業は作ったブランチで行います。
github-action-demoとでもしておきます。
※後の手順でプルリクを作り、そこでGitHub Actionが動作するのを見たいので以降はブランチで作業します。
ワークフローの作成
クイックスタートをベースにしています。
クイックスタートではGitHub上で直接ファイルやディレクトリを作成していますが、
ここではローカルでブランチを切ってファイルを作成していくイメージとしています。
VSCodeでの入力補完など効かせたかったので上記としています。
GitHub Actions のクイックスタート - GitHub Docs
- リポジトリ直下にgithub/workflows ディレクトリを作成します。
- github-actions-demo.ymlというファイル名のYAMLファイルを作成します。
- YAMLの中身はまるっとコピペ
- YAMLファイルを保存して、コミット&プッシュします。
- プルリク作成します。
- Actionが動作します。
YAMLファイル
name: GitHub Actions Demo on: [push] jobs: Explore-GitHub-Actions: runs-on: ubuntu-latest steps: - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - name: Check out repository code uses: actions/checkout@v2 - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." - run: echo "🖥️ The workflow is now ready to test your code on the runner." - name: List files in the repository run: | ls ${{ github.workspace }} - run: echo "🍏 This job's status is ${{ job.status }}."
クイックスタートのアクションはほぼechoでテキストを出力しているだけですが、
githubコンテキスト情報を使っていたり、
usesでソースをチェックアウトしてたり参考になります。
GitHub Actionsのワークフロー構文
name
ワークフローの名前。 GitHubでは、リポジトリのアクションページにワークフローの名前が表示されます。
nameを省略すると、GitHubはリポジトリのルートに対するワークフローファイルの相対パスをその値に設定します。
on
必須。
ワークフローをトリガーするGitHubイベントの名前。
指定できるのは、1つのイベントstring、複数イベントのarray、イベントtypesのarrayです。
あるいは、ワークフローをスケジュールする、またはワークフロー実行を特定のファイルやタグ、ブランチ変更に限定するイベント設定mapも指定できます。
使用可能なイベントの一覧は、「ワークフローをトリガーするイベント」を参照
permissions
# 権限の指定(未指定の場合はnone) permissions: actions: read|write|none checks: read|write|none contents: read|write|none deployments: read|write|none issues: read|write|none packages: read|write|none pull-requests: read|write|none repository-projects: read|write|none security-events: read|write|none statuses: read|write|none
# 読み込み権限 permissions: read-all # 書き込み権限 permissions: write-all
env
環境変数のmap。
ワークフロー中のすべてのジョブのステップから利用できる。
env: SERVER: production
default
デフォルト設定のmap。
ワークフロー中のすべてのジョブに適用されます。
defaults: run: shell: bash working-directory: scripts
concurrency:
まだベータ版のようですが、並行処理の設定が可能
デフォルトでは、ジョブは並行して実行されます。
jobs
ワークフローの実行処理
1つ以上のジョブが必要
デフォルトでは並行して実行されるが、順序を制御したい場合はneedsキーワードを使用する。
jobs: my_first_job: name: My first job my_second_job: name: My second job
needs
jobs: job1: # job1の終了後に実行 job2: needs: job1 # job1とjobb2の終了後に実行 job3: needs: [job1, job2]
※途中のジョブが失敗した場合、そのジョブを必要としている他のジョブはすべてスキップされます。
runs-on
ジョブが実行されるマシンの種類
GitHubホストランナーあるいはセルフホストランナー
runs-on: ubuntu-latest
environment
GitHub上で設定できるenvironmentの指定
environmentの名前を指定することでenvironment内の環境変数をすべて設定可能
jobs: stale: runs-on: ubuntu-latest permissions: issues: write pull-requests: write environment: staging_environment steps: - uses: actions/stale@v3
steps
ジョブの中の1実行単位
name
GitHubで表示されるステップの名前。
uses
実行されるアクションを選択します。
run
OSのシェルを使用してコマンドラインプログラムを実行します。
matrix
単一のジョブ設定を元に複数のジョブを実行する。
複数バージョンの言語や複数のOSなど
runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-18.04, ubuntu-20.04] node: [10, 12, 14] steps: - uses: actions/setup-node@v2 with: node-version: ${{ matrix.node }}
container
ジョブ実行時のコンテナ設定
各ワークフロー構文の詳細
詳細は下記参照ですが、割と使いそうなものだけピックアップ
GitHub Actionsのワークフロー構文 - GitHub Docs
onの詳細
単一のイベントの例
# リポジトリ内の任意のブランチにコードがプッシュされたときにトリガーされる on: push
複数イベントの例
# プッシュもしくはPull Requestイベントでワークフローをトリガーする on: [push, pull_request]
複数イベントで異なるアクティビティを指定する例
on: # プッシュもしくはPull Requestでワークフローをトリガーする # ただしメインブランチの場合のみ push: branches: - main pull_request: branches: - main # page_buildとリリース作成イベントでもトリガーする page_build: release: types: # この設定は上記のpage_buildイベントには影響しない - created
詳細
ワークフローをトリガーするイベント - GitHub Docs
ホストランナー
GitHubホストランナー
オペレーティングシステム、プリインストールされたパッケージとツール、セルフホストランナーアプリケーションの自動アップデートを受信します。
GitHubによって管理及びメンテナンスされます。
ジョブの実行のたびにクリーンなインスタンスを提供します。
GitHubプランの無料の分を使います。無料の分を超えると、分単位のレートが適用されます。
セルフホストランナー
セルフホストランナーアプリケーションのみ、自動アップデートを受信します。
オペレーティングシステムとその他のソフトウェアのアップデートはあなたがしなければなりません。
すでに支払いをしているクラウドサービスあるいはローカルマシンを利用できます。
利用するハードウェア、オペレーティングシステム、ソフトウェア、セキュリティ上の要求に合わせてカスタマイズできます。
ジョブの実行のたびにクリーンなインスタンスを保持する必要がありません。
GitHub Actionsと合わせて無料で利用できますが、ランナーマシンのメンテナンスコストはあなたが受け持ちます。
さいごに
ベース部分はなんとなく理解したので、
引き続きCIの導入と個人的にやりたいプルリクの自動作成を導入します。
WindowsにGoをインストールしようとしてハマった
はじめに
久しぶりのGo案件なので、改めてインストールしなおしたら動かなくなった。
結論としては環境変数でGOROOTを設定して解決しました。
環境
- Windows10
- Go 1.16.5
インストール
公式からインストーラをダウンロードしてインストール
https://golang.org/doc/install
次へ
次へ
次へ
Programing Filesで良くなったみたいですね。
昔はCドライブ直下でしたよね。
インストール完了
確認
C:\>go version go: cannot find GOROOT directory: ~\go
おぉぅ。
GOROOTがおかしいみたい。
デフォルトでユーザディレクトリ配下を見てしまっているようです。
GOROOT設定しない方がいいと色々な記事には書いているみたいなのですが、
複数バージョン入れているような場合には設定するようなこともないようなので、
GOROOTを設定してみます。
C:\>go version go version go1.16.5 windows/amd64
無事確認ができました。
おまけ
コマンドで環境変数設定
コマンドプロンプト
SET GOROOT=C:\Program Files\Go
これだと、コマンドプロンプトを閉じると設定が戻ってしまいます。
永続的に設定をするためには、下記のコマンド実行
SETX GOROOT "C:\Program Files\Go"
上記はユーザ環境変数に対して設定されます。
システム環境変数に設定したい場合はパラメータで「/M」を指定
SETX /M GOROOT "C:\Program Files\Go"
Powershell
$ENV:GOROOT="C:\Program Files\Go"
コマンドプロンプトのSETと同様こちらも設定が戻ってしまいます。
永続的に設定するには以下
[System.Environment]::SetEnvironmentVariable("GOROOT", "C:\Program Files\Go", "User")
ちょっと長すぎて覚えられないですね。
SETXがPowershellでも使えました。書き方はコマンドプロンプトと同じなのでこちらの方がお手軽です。
SETX /M GOROOT "C:\Program Files\Go"
SETも試してみましたが何も起きず。
エラーにもならないので、設定されていると勘違いしそうな罠です。
追記
上記の設定でVSCodeを開くと拡張機能のGoのTool類のインストールが失敗してしまいました。
VSCode内では~\goを見ようとしているみたいです。
システム環境変数に設定を変えてみたり、VSCodeの設定にgoroot、gopathを設定してみましたが、結果変わらず。
ひとまず、1つづつgo getを自前で実行することでインストールは出来ましたが、
根本解決は引き続き。
AWS Amplifyのinitでs3:SetBucketEncryption Access Deniedエラー
結論
AWS Amplifyを試してみようと思い、セットアップを行っていたところエラーが発生。
ポリシーでs3:PutEncryptionConfigurationを追加してあげればOK
エラー発生まで
Amplify CLIのインストール
npm install -g @aws-amplify/cli
Amplify 初期化
amplify configure # アカウントのログイン Sign in to your AWS administrator account: Press Enter to continue # リージョンの選択(ap-northeast-1を選択) Specify the AWS Region ? region: ap-northeast-1 # IAM ユーザの作成(名前はデフォルトのまま) Specify the username of the new IAM user: ? user name: amplify-5lBeT # コンソールの操作 # ポリシーをAdministratorAccessからAdministratorAccess-Amplifyに変更(セキュリティ面を考慮) # 他はデフォルトのままIAMユーザを作成 # ターミナルに戻り # 作成したIAMのAccessKeyとSecretAccessKeyを入力 Enter the access key of the newly created user: ? accessKeyId: ******************** ? secretAccessKey: **************************************** # プロファイル名の指定(任意 credentialsに書き込まれる) This would update/create the AWS Profile in your local machine ? Profile Name: amplify-sample
amplify init # プロジェクト名の指定 Note: It is recommended to run this command from the root of your app directory ? Enter a name for the project amplifyproject The following configuration will be applied: Project information | Name: awsamplifysample | Default editor: Visual Studio Code | App type: javascript | Javascript framework: none | Source Directory Path: src | Distribution Directory Path: dist | Build Command: npm.cmd run-script build | Start Command: npm.cmd run-script start # デフォルトのまま ? Initialize the project with the above configuration? Yes Using default provider awscloudformation # 作成したIAMのprofileがcredentialsに作成されているのでprofileを指定 Using default provider awscloudformation ? Select the authentication method you want to use: AWS profile For more information on AWS Profiles, see: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html # amplify configureで作成したprofile名を指定 ? Please choose the profile you want to use amplify-sample Adding backend environment dev to AWS Amplify Console app: dbnvauyxfn0p0 / Initializing project in the cloud... # cloudformationによるセットアップ CREATE_IN_PROGRESS amplify-amplifyproject-dev-12345 AWS::CloudFormation::Stack Mon May 24 2021 02:31:53 GMT-0900 (GMT-09:00) User Initiated CREATE_IN_PROGRESS UnauthRole AWS::IAM::Role Mon May 24 2021 02:31:57 GMT-0900 (GMT-09:00) CREATE_IN_PROGRESS AuthRole AWS::IAM::Role Mon May 24 2021 02:31:58 GMT-0900 (GMT-09:00) CREATE_IN_PROGRESS DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:31:58 GMT-0900 (GMT-09:00) CREATE_IN_PROGRESS UnauthRole AWS::IAM::Role Mon May 24 2021 02:31:58 GMT-0900 (GMT-09:00) Resource creation Initiated / Initializing project in the cloud... CREATE_IN_PROGRESS AuthRole AWS::IAM::Role Mon May 24 2021 02:31:59 GMT-0900 (GMT-09:00) Resource creation Initiated CREATE_IN_PROGRESS DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:31:59 GMT-0900 (GMT-09:00) Resource creation Initiated CREATE_FAILED DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:32:00 GMT-0900 (GMT-09:00) API: s3:SetBucketEncryption Access Denied CREATE_FAILED AuthRole AWS::IAM::Role Mon May 24 2021 02:32:01 GMT-0900 (GMT-09:00) Resource creation cancelled CREATE_FAILED UnauthRole AWS::IAM::Role Mon May 24 2021 02:32:01 GMT-0900 (GMT-09:00) Resource creation cancelled ROLLBACK_IN_PROGRESS amplify-amplifyproject-dev-12345 AWS::CloudFormation::Stack Mon May 24 2021 02:32:02 GMT-0900 (GMT-09:00) The following resource(s) failed to create: [AuthRole, DeploymentBucket, UnauthRole]. Rollback requested by user. | Initializing project in the cloud... DELETE_IN_PROGRESS AuthRole AWS::IAM::Role Mon May 24 2021 02:32:22 GMT-0900 (GMT-09:00) DELETE_IN_PROGRESS UnauthRole AWS::IAM::Role Mon May 24 2021 02:32:22 GMT-0900 (GMT-09:00) DELETE_SKIPPED DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:32:22 GMT-0900 (GMT-09:00) | Initializing project in the cloud... DELETE_COMPLETE AuthRole AWS::IAM::Role Mon May 24 2021 02:32:23 GMT-0900 (GMT-09:00) DELETE_COMPLETE UnauthRole AWS::IAM::Role Mon May 24 2021 02:32:24 GMT-0900 (GMT-09:00) ROLLBACK_COMPLETE amplify-amplifyproject-dev-12345 AWS::CloudFormation::Stack Mon May 24 2021 02:32:25 GMT-0900 (GMT-09:00) / Initializing project in the cloud... An error occurred when creating the CloudFormation stack / Initializing project in the cloud... Following resources failed
対処
結果から察するに、s3:SetBucketEncryption Access Deniedエラーが発生しロールバックした雰囲気 AdministratorAccess-Amplify権限つけているのに、initも出来ないのかい! と思いつつも、権限エラーぽいので、 気を取り直しポリシー増やす。 が、SetBucketEncryptionという権限がない。
それっぽいような、s3:PutEncryptionConfiguration 権限を追加し再度init実行で無事正常終了となりました。
AWS Amplifyのinitでs3:SetBucketEncryption Access Deniedエラー
結論
AWS Amplifyを試してみようと思い、セットアップを行っていたところエラーが発生。
ポリシーでs3:PutEncryptionConfigurationを追加してあげればOK
エラー発生まで
Amplify CLIのインストール
npm install -g @aws-amplify/cli
Amplify 初期化
amplify configure # アカウントのログイン Sign in to your AWS administrator account: Press Enter to continue # リージョンの選択(ap-northeast-1を選択) Specify the AWS Region ? region: ap-northeast-1 # IAM ユーザの作成(名前はデフォルトのまま) Specify the username of the new IAM user: ? user name: amplify-5lBeT # コンソールの操作 # ポリシーをAdministratorAccessからAdministratorAccess-Amplifyに変更(セキュリティ面を考慮) # 他はデフォルトのままIAMユーザを作成 # ターミナルに戻り # 作成したIAMのAccessKeyとSecretAccessKeyを入力 Enter the access key of the newly created user: ? accessKeyId: ******************** ? secretAccessKey: **************************************** # プロファイル名の指定(任意 credentialsに書き込まれる) This would update/create the AWS Profile in your local machine ? Profile Name: amplify-sample
amplify init # プロジェクト名の指定 Note: It is recommended to run this command from the root of your app directory ? Enter a name for the project amplifyproject The following configuration will be applied: Project information | Name: awsamplifysample | Default editor: Visual Studio Code | App type: javascript | Javascript framework: none | Source Directory Path: src | Distribution Directory Path: dist | Build Command: npm.cmd run-script build | Start Command: npm.cmd run-script start # デフォルトのまま ? Initialize the project with the above configuration? Yes Using default provider awscloudformation # 作成したIAMのprofileがcredentialsに作成されているのでprofileを指定 Using default provider awscloudformation ? Select the authentication method you want to use: AWS profile For more information on AWS Profiles, see: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html # amplify configureで作成したprofile名を指定 ? Please choose the profile you want to use amplify-sample Adding backend environment dev to AWS Amplify Console app: dbnvauyxfn0p0 / Initializing project in the cloud... # cloudformationによるセットアップ CREATE_IN_PROGRESS amplify-amplifyproject-dev-12345 AWS::CloudFormation::Stack Mon May 24 2021 02:31:53 GMT-0900 (GMT-09:00) User Initiated CREATE_IN_PROGRESS UnauthRole AWS::IAM::Role Mon May 24 2021 02:31:57 GMT-0900 (GMT-09:00) CREATE_IN_PROGRESS AuthRole AWS::IAM::Role Mon May 24 2021 02:31:58 GMT-0900 (GMT-09:00) CREATE_IN_PROGRESS DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:31:58 GMT-0900 (GMT-09:00) CREATE_IN_PROGRESS UnauthRole AWS::IAM::Role Mon May 24 2021 02:31:58 GMT-0900 (GMT-09:00) Resource creation Initiated / Initializing project in the cloud... CREATE_IN_PROGRESS AuthRole AWS::IAM::Role Mon May 24 2021 02:31:59 GMT-0900 (GMT-09:00) Resource creation Initiated CREATE_IN_PROGRESS DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:31:59 GMT-0900 (GMT-09:00) Resource creation Initiated CREATE_FAILED DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:32:00 GMT-0900 (GMT-09:00) API: s3:SetBucketEncryption Access Denied CREATE_FAILED AuthRole AWS::IAM::Role Mon May 24 2021 02:32:01 GMT-0900 (GMT-09:00) Resource creation cancelled CREATE_FAILED UnauthRole AWS::IAM::Role Mon May 24 2021 02:32:01 GMT-0900 (GMT-09:00) Resource creation cancelled ROLLBACK_IN_PROGRESS amplify-amplifyproject-dev-12345 AWS::CloudFormation::Stack Mon May 24 2021 02:32:02 GMT-0900 (GMT-09:00) The following resource(s) failed to create: [AuthRole, DeploymentBucket, UnauthRole]. Rollback requested by user. | Initializing project in the cloud... DELETE_IN_PROGRESS AuthRole AWS::IAM::Role Mon May 24 2021 02:32:22 GMT-0900 (GMT-09:00) DELETE_IN_PROGRESS UnauthRole AWS::IAM::Role Mon May 24 2021 02:32:22 GMT-0900 (GMT-09:00) DELETE_SKIPPED DeploymentBucket AWS::S3::Bucket Mon May 24 2021 02:32:22 GMT-0900 (GMT-09:00) | Initializing project in the cloud... DELETE_COMPLETE AuthRole AWS::IAM::Role Mon May 24 2021 02:32:23 GMT-0900 (GMT-09:00) DELETE_COMPLETE UnauthRole AWS::IAM::Role Mon May 24 2021 02:32:24 GMT-0900 (GMT-09:00) ROLLBACK_COMPLETE amplify-amplifyproject-dev-12345 AWS::CloudFormation::Stack Mon May 24 2021 02:32:25 GMT-0900 (GMT-09:00) / Initializing project in the cloud... An error occurred when creating the CloudFormation stack / Initializing project in the cloud... Following resources failed
対処
結果から察するに、s3:SetBucketEncryption Access Deniedエラーが発生しロールバックした雰囲気 AdministratorAccess-Amplify権限つけているのに、initも出来ないのかい! と思いつつも、権限エラーぽいので、 気を取り直しポリシー増やす。 が、SetBucketEncryptionという権限がない。
それっぽいような、s3:PutEncryptionConfiguration 権限を追加し再度init実行で無事正常終了となりました。
CloudStorageをGCEにマウントする。
基本的に下記のgitに記載されているが、ちょっと判りずらいので整理
https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/installing.md
事前準備
gcsfuseのインストール
export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s` echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-get -y update sudo apt-get -y install gcsfuse
認証
アカウントにログイン
コマンドを実行後、入力を求められる。
コンソールに出力されたURLにアクセスし、
表示されたコードをコピーしてコンソールに貼り付ける
gcloud auth application-default login gcloud auth login
マウント
マウント先のディレクトリを作成し、
gcsfuseでマウント
my-bucket:マウントするバケット
mkdir /path/to/mount/point gcsfuse my-bucket /path/to/mount/point