botocore.exceptions.InvalidConfigError: исходный профиль "по умолчанию" должен иметь учетные данные. - PullRequest
0 голосов
/ 26 мая 2020

Код ниже не работает в строке s3 = boto3.client('s3') возвращает ошибку botocore.exceptions.InvalidConfigError: The source profile "default" must have credentials.

def connect_s3_boto3():
    try:
        os.environ["AWS_PROFILE"] = "a"
        s3 = boto3.client('s3')
        return s3
    except:
        raise

Я установил ключ и секрет, используя aws configure enter image description here

Мой файл vim ~/.aws/credentials выглядит так:

[default]
aws_access_key_id = XXXXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

Мой файл vim ~/.aws/config выглядит так:

[default]
region = eu-west-1
output = json

[profile b]
region=eu-west-1
role_arn=arn:aws:iam::XX
source_profile=default

[profile a]
region=eu-west-1
role_arn=arn:aws:iam::YY
source_profile=default

[profile d]
region=eu-west-1
role_arn=arn:aws:iam::EE
source_profile=default

Если я запустил aws-vault exec --no-session --debug a, он вернет:

aws-vault: error: exec: Failed to get credentials for a9e: InvalidClientTokenId: The security token included in the request is invalid. status code: 403, request id: 7087ea72-32c5-4b0a-a20e-fd2da9c3c747

Ответы [ 3 ]

0 голосов
/ 28 мая 2020

Наконец, проблема в том, что Docker не имеет учетных данных. И, несмотря на подключение через bash и их добавление, это не сработало.

Итак, в dockerfile я добавил:

ADD myfolder/aws/credentials /root/.aws/credentials

Чтобы переместить мои файлы учетных данных locahost, добавленные через aws cli используя aws configure для docker. Затем я снова собираю docker, и он работает.

0 голосов
/ 18 июня 2020

Используйте том docker для передачи файлов учетных данных в контейнер: https://docs.docker.com/storage/volumes/

Не рекомендуется добавлять учетные данные в образ контейнера, потому что любой, кто использует это изображение будет иметь и использовать ваши учетные данные. Это считается плохой практикой.

Для получения дополнительной информации о том, как правильно обращаться с секретами, см. https://docs.docker.com/engine/swarm/secrets/

0 голосов
/ 26 мая 2020

Я заметил, что вы пометили этот вопрос с помощью «docker». Возможно ли, что вы запускаете свой код из контейнера Docker, в котором нет ваших учетных данных AWS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...