ECS 컨테이너 자격 증명

2588 단어
저는 최근에 ECS 컨테이너의 역할을 가정하는 문제를 발견했습니다.

내 ECS 작업의 작업 역할에는 대상 계정에서 역할을 수임하는 정책이 있었고 AWS 설명서의 단계 및 문제 해결도 따랐지만(here 참조) 여전히 역할을 수임할 수 없었습니다.

내 주요 문제는 프로세스가 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 변수를 볼 수 없어서 역할에서 자격 증명을 가져올 수 없다는 것입니다.

AWS 문서에 따라:

The environment variable AWS_CONTAINER_CREDENTIALS_RELATIVE_URI is available only to PID 1 processes within a container. If the container is running multiple processes or init processes (such as wrapper script, start script, or supervisord), the environment variable is unavailable to non-PID 1 processes.

To set your environment variable so that it's available to non-PID 1 processes, export the environment variable in the .profile file. For example, run the following command to export the variable in the Dockerfile for your container image:

RUN echo 'export $(strings /proc/1/environ | grep AWS_CONTAINER_CREDENTIALS_RELATIVE_URI)' >> /root/.profile

Now additional processes can access the environment variable.



제안한대로 Dockerfile에 명령을 추가하려고 시도했지만 .... 도움이되지 않았습니다. 나는 또한 docker entypoint 스크립트에 동일한 것을 추가하려고 시도했습니다 ... 동일합니다. 나는 다른 것을 시도했지만 여전히 아무것도 없습니다.

내 컨테이너는 gitlab 파이프라인의 일부로 실행 중이었고( 참조) 작동하도록 만든 유일한 방법은 파이프라인 작업에서 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI를 내보내는 것이었습니다.

예를 들어

test-job1:
  stage: test
  script:
    - export $(strings /proc/1/environ | grep AWS_CONTAINER_CREDENTIALS_RELATIVE_URI)
    - aws s3 ls --profile cross-account-role



현재 이것이 내가 작업 역할에서 자격 증명을 얻을 수 있는 유일한 방법입니다. 우아하지는 않지만 작동합니다.

누구든지 같은 문제를 겪었고 더 나은 해결책을 찾았다면 기쁜 소식을 전하겠습니다. 문제를 해결하는 데 조금이라도 도움이 된다면 더욱 기쁠 것입니다.

차오!


연결


  • https://aws.amazon.com/premiumsupport/knowledge-center/ecs-iam-role-another-account/
  • https://aws.amazon.com/premiumsupport/knowledge-center/ecs-iam-task-roles-config-errors/
  • https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html
  • 좋은 웹페이지 즐겨찾기