3

と呼ばれるツールを使用しており、ツールdbtのデータベース認証方法は IAM を利用しています。残念ながら、代わりにインスタンス プロファイルを使用するため、CodeBuild プロジェクトがビルドされるときに IAM プロファイルは存在しません。このため、データベースに接続できません。

この質問を参照して、プロジェクトで実行aws sts get-caller-identityして、必要な値の一部を取得できるかどうかを確認しましたが、返されました

botocore.exceptions.ProfileNotFound: The config profile (***) could not be found

~/.aws/configCodeBuild プロジェクト内で自分自身を生成する方法を知っている人はいますか?

編集: ツールは boto3 を使用して一時的な認証情報を生成します: https://github.com/fishtown-analytics/dbt/blob/9d00c000720d17c42a4fa08a26b75bd500cc857f/plugins/redshift/dbt/adapters/redshift/connections.py#L101-L123

しかし、CodeBuild プロジェクト内でこれらの資格情報を生成できないようです。

編集:

buildspec.yml

version: 0.2

env:
  variables:
    MODELS_REPO: dbt-dev
    PYTHON_VERSION: 3.8
  parameter-store:
    AWS_ENVIRONMENT: "/cloudformation/environment"
    AWS_PROFILE: "/cloudformation/environment"
    CODEARTIFACT_COMPANY: "/codeartifact/company"
    GITHUB_OWNER: "/github/owner"
    GITHUB_PERSONAL_ACCESS_TOKEN: "/secret/github/token"
    GITHUB_USER: "/github/user"

phases:
  install:
    runtime-versions:
        python: "${PYTHON_VERSION}"
    commands:
      - pip install -r projects/${PROJECT_NAME}/requirements.txt
      - ./projects/${PROJECT_NAME}/.aws/phases/install.sh
  pre_build:
    commands:
      - ./projects/${PROJECT_NAME}/.aws/phases/pre_build.sh
  build:
    commands:
      - ./projects/${PROJECT_NAME}/.aws/phases/build.sh
  post_build:
    commands:
      - ./projects/${PROJECT_NAME}/.aws/phases/post_build.sh

cache:
  paths:
    - /root/.cache/pip
    - /root/.cache/pip/**/*
    - ~/.cache/pip
    - ~/.cache/pip/**/*
4

1 に答える 1