🏴

Greengrass Development Kit CLIで作成したカスタムコンポーネントのデプロイ先アカウントを指定する

2023/02/17に公開

Greengrass Development Kit CLIでGreengrassのカスタムコンポーネントを作り、デプロイ先のアカウントを指定するにつまったのでメモ

この記事で書きたいこと

CLIのオプションにAWS CLIで作成したプロファイルを指定するオプションが無いため、デプロイ時のAWSアカウントを指定する場合は、環境変数AWS_PROFILEで指定します

AWS_PROFILE=xxxxx gdk component publish --bucket DeployBucket
  • xxxxxはAWS CLIで作成したプロファイル名

つまったこと

  • Greengrass Development Kit CLIでデプロイ先のアカウントを指定する方法がわかりませんでした
  • helpオプションを確認しても定義されていませんでした
    • --aws-profile,--profileなどのオプションを指定してもエラーになります(定義されていないので当たり前)

コンポーネントの作成〜デプロイまでの手順(チュートリアル)

Greengrass Development Kit CLIのインストール

以下を参考にインストール
https://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/install-greengrass-development-kit-cli.html

コンポーネントをテンプレートから作成する手順

テンプレート一覧確認

gdk component list --template
[2023-02-17 11:31:33] INFO - Listing all the available component templates from Greengrass Software Catalog.
[2023-02-17 11:31:33] INFO - Found '2' component templates to display.
1. HelloWorld-python
2. HelloWorld-java

テンプレートからコンポーネントを作成する

プロジェクトフォルダを作成してテンプレートを取得します

mkdir HelloWorld
cd HelloWorld
gdk component init --template HelloWorld --language python

設定ファイルを編集します
gdk-config.json

{
  "component": {
    "com.example.PythonHelloWorld": {
      "author": "Author",
      "version": "NEXT_PATCH",
      "build": {
        "build_system": "zip"
      },
      "publish": {
        "bucket": "DeployBucket",
        "region": "ap-northeast-1"
      }
    }
  },
  "gdk_version": "1.0.0"
}

recipe.yml

RecipeFormatVersion: "2020-01-25"
ComponentName: "{COMPONENT_NAME}"
ComponentVersion: "{COMPONENT_VERSION}"
ComponentDescription: "This is simple Hello World component written in Python."
ComponentPublisher: "{COMPONENT_AUTHOR}"
ComponentConfiguration:
  DefaultConfiguration:
    Message: "World"
Manifests:
  - Platform:
      os: all
    Artifacts:
      - URI: "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip"
        Unarchive: ZIP
    Lifecycle:
      Run: "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}"
  • ArtifactsLifecycle.Runで定義しているHelloWorldはプロジェクトのディレクトリ名と一致させます

ビルド

gdk component build

デプロイ

CLIのオプションにAWS CLIで作成したプロファイルを指定するオプションが無いため、環境変数AWS_PROFILEで指定します

AWS_PROFILE=xxxxx gdk component publish --bucket DeployBucket

指定したプロファイルのアカウントにデプロイされました

  • 2回デプロイしたため、バージョンがインクリメントされました
    • 1.0.0 -> 1.0.1

以上です

参考

https://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html

GitHubで編集を提案

Discussion