簡體   English   中英

AWS Batch 容器無法通過 aws-cli 訪問 S3

[英]AWS Batch container cannot access S3 via aws-cli

我正在嘗試運行 AWS Batch 作業,但在調用aws-cli將數據從 s3 復制到容器時失敗。 錯誤信息如下:

fatal error: Unable to locate credentials

我的作業定義有一個具有兩個托管策略的執行角色: AmazonS3FullAccessAmazonECSTaskExecutionRolePolicy 容器鏡像是從默認的ubuntu:22.04鏡像構建的,並且有一個類似於以下內容的入口點文件:

#!/bin/bash
set -ex

aws s3 cp ...

我也一直在閱讀以下問題: ECS Fargate task not applying role ,它指出容器應該有一個變量AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ,但我沒有。 我在我的入口點添加了一個declare -x ,這是我執行批處理作業時的 output:

declare -x AWS_BATCH_CE_NAME="MyCluster"
declare -x AWS_BATCH_JOB_ATTEMPT="1"
declare -x AWS_BATCH_JOB_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
declare -x AWS_BATCH_JQ_NAME="MyQueue"
declare -x AWS_DEFAULT_REGION="us-west-2"
declare -x AWS_EXECUTION_ENV="AWS_ECS_FARGATE"
declare -x AWS_REGION="us-west-2"
declare -x DEBIAN_FRONTEND="noninteractive"
declare -x ECS_CONTAINER_METADATA_URI="http://111.111.111.1/v3/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx"
declare -x ECS_CONTAINER_METADATA_URI_V4="http://111.111.111.1/v4/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx"
declare -x HOME="/root"
declare -x HOSTNAME="ip-111-11-1-111.us-west-2.compute.internal"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x PWD="/"
declare -x SHLVL="1"

此外,在設置 Fargate 集群時,我可以看到任務定義除了執行角色外還有一個“任務角色”。 我的理解是“任務角色”是在容器內部定義的角色,而執行角色則定義為設置容器。 在 Batch 中,沒有這樣的“任務角色”。 所以,我的問題是,如何授權我的容器使用容器內的aws-cli訪問我的 AWS 資源?

我終於想出了如何將權限傳遞給容器。 作業定義有一個直接傳遞給 ECS 任務角色的“作業角色”,但該配置選項在 AWS 控制台中不可用。 必須通過 API 或 CLI 在--container-properties參數中注冊作業定義:

aws batch register-job-definition --container-properties '{"jobRoleArn": "...","executionRoleArn": "..."}' ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM