Шаблон Cloudformation не может выполнить поиск цели монтирования - PullRequest
1 голос
/ 11 марта 2019

У меня есть следующая команда в пользовательских данных моего шаблона облачной информации:

MOUNT_TARGET_IP=$(aws efs describe-mount-targets --file-system-id fs-xxxxxxx --query 'MountTargets[*].IpAddress' --output text)

Также в моем шаблоне у меня есть следующая политика:

MyPolicy:
Type: "AWS::IAM::Policy"
Properties:
  PolicyName: !Sub "${AWS::StackName}_bucket_and_mount_targets_policy"
  PolicyDocument: 
    Version: "2012-10-17"
    Statement: 
      -
        Effect: "Allow"
        Action: "s3:GetObject"
        Resource: !Sub "arn:aws:s3:::${AuthorizedKeyBucketName}/authorized_keys"
      -
        Effect: "Allow"
        Action: "s3:ListBucket"
        Resource: !Sub "arn:aws:s3:::${AuthorizedKeyBucketName}"
      -
        Effect: "Allow"
        Action: "elasticfilesystem:DescribeMountTargets"
        Resource: "arn:aws:elasticfilesystem:us-east-1:xxxxxxxxxx:file-system/fs-xxxxxxx"
  Roles: 
    - 
      !Ref MyRole

Я не уверен, почему я все еще получаю следующую ошибку:

You must specify a region. You can also configure your region by running "aws configure".

Когда я запускаю ssh в экземпляр, затем настраиваю регион и ключи доступа вручную, а затем пытаюсь выполнить приведенные выше операторы, кажется, что он работает просто отлично.

Есть мысли?

1 Ответ

1 голос
/ 11 марта 2019

Для большинства команд CLI AWS требуется настроить регион, а вы не настроили его здесь.

Вы можете изменить команду CLI, указав регион:

MOUNT_TARGET_IP=$(aws efs describe-mount-targets \
  --file-system-id fs-xxxxxxx \
  --query 'MountTargets[*].IpAddress' \
  --region ... \  # add this
  --output text)

Или вы можете установить переменную AWS_DEFAULT_REGION:

AWS_DEFAULT_REGION=...
export AWS_DEFAULT_REGION
MOUNT_TARGET_IP=$(aws efs describe-mount-targets --file-system-id fs-xxxxxxx \
  --query 'MountTargets[*].IpAddress' --output text)

Или вы можете настроить скрипт на выполнение aws или иным образом указать регион в ~/.aws/config.

Обратите внимание, что настройка интерфейса командной строки AWS с помощью ключей доступа не рекомендуется. Вместо этого вы должны использовать роли IAM.

...