AWS::CloudFormation::Authentication
Use o recurso AWS::CloudFormation::Authentication
para especificar credenciais de autenticação para arquivos ou fontes especificados com o recurso AWS::CloudFormation::Init.
Para incluir informações de autenticação para um arquivo ou fonte especificado com o AWS::CloudFormation::Init
, use a propriedade uris
se a fonte é um URI ou a propriedade buckets
se a fonte é um bucket do Amazon S3. Para obter mais informações sobre arquivos, consulte Arquivos. Para obter mais informações sobre fontes, consulte Origens.
Você também pode especificar as informações de autenticação para arquivos diretamente no recurso AWS::CloudFormation::Init
. A chave de arquivos do recurso contém uma propriedade nomeada authentication
. Você pode usar a propriedade authentication
para associar informações de autenticação definidas em um recurso diretamente a um arquivo.AWS::CloudFormation::Authentication
Para arquivos, o AWS CloudFormation busca informações de autenticação na seguinte ordem:
-
A propriedade
authentication
da chaveAWS::CloudFormation::Init
files
. -
A propriedade
uris
oubuckets
do recursoAWS::CloudFormation::Authentication
.
Para fontes, o CloudFormation buscará informações de autenticação na propriedade uris
ou buckets
do recurso AWS::CloudFormation::Authentication
.
Tópicos
Sintaxe
Para declarar essa entidade no modelo do CloudFormation, use a seguinte sintaxe:
Você deve estar ciente das seguintes considerações ao usar o tipo AWS::CloudFormation::Authentication
:
-
Ao contrário da maioria dos recursos do CloudFormation, o tipo
AWS::CloudFormation::Authentication
não contêm um bloco chamado Properties, mas, em vez disso, uma lista de blocos nomeados pelo usuário, cada um com as próprias propriedades de autenticação.Nem todas as propriedades pertencem a cada tipo de autenticação; consulte a propriedade tipo para obter mais detalhes.
-
Ao contrário da maioria dos recursos do CloudFormation, os nomes de propriedades usam letras minúsculas concatenadas.
JSON
{ "Type" : "AWS::CloudFormation::Authentication" { "
String
" : { "accessKeyId" :String
, "buckets" : [String, ...
], "password" :String
, "secretKey" :String
, "type" :String
, "uris" : [String, ...
], "username" :String
, "roleName" :String
} } }
YAML
Type: AWS::CloudFormation::Authentication
String
: accessKeyId:String
buckets: -String
password:String
secretKey:String
type:String
uris: -String
username:String
roleName:String
Propriedades
accessKeyId
-
Especifica o ID da chave de acesso para autenticação S3.
Obrigatório: condicional. Pode ser especificada somente se a propriedade
type
estiver definida comoS3
.Tipo: string
buckets
-
Uma lista delimitada por vírgulas de buckets Amazon S3 a serem associados às credenciais de autenticação S3.
Obrigatório: condicional. Pode ser especificada somente se a propriedade
type
estiver definida comoS3
.Tipo: lista de valores de strings
password
-
Especifica a senha para autenticação básica.
Obrigatório: condicional. Pode ser especificada somente se a propriedade de tipo estiver definida como
basic
.Tipo: string
secretKey
-
Especifica a chave secreta para a autenticação S3.
Obrigatório: condicional. Pode ser especificada somente se a propriedade
type
estiver definida comoS3
.Tipo: string
type
-
Especifica se o esquema de autenticação usa um nome de usuário e uma senha (básico) ou um ID de chave de acesso e chave secreta (S3).
Se você especificar
basic
, especifique as propriedadesusername
,password
euris
.Se você especificar
S3
, especifique as propriedadesaccessKeyId
,secretKey
ebuckets
(opcional).Obrigatório: Sim
Valores válidos:
basic
|S3
uris
-
Uma lista delimitada por vírgulas de URIs a serem associados às credenciais de autenticação básicas. A autorização se aplica a URIs especificados e a todos os URIs mais específicos. Por exemplo, se você especificar
http://www.example.com
, a autorização também se aplicará ahttp://www.example.com/test
.Obrigatório: condicional. Pode ser especificada somente se a propriedade
type
estiver definida comobasic
.Tipo: lista de valores de strings
username
-
Especifica o nome de usuário para autenticação básica.
Obrigatório: condicional. Pode ser especificada somente se a propriedade de tipo estiver definida como
basic
.Tipo: string
roleName
-
Descreve a função para a autenticação baseada em função.
Importante
Essa função deve estar contida no perfil de instância anexado à instância do EC2. Um perfil de instância pode conter apenas uma função do IAM.
Obrigatório: condicional. Pode ser especificada somente se a propriedade
type
estiver definida comoS3
.Tipo: string
Exemplos
nota
Ao contrário da maioria dos recursos, o tipo AWS::CloudFormation::Authentication
define uma lista de blocos nomeados pelo usuário, cada um dos quais contém propriedades de autenticação que usam nomenclatura em letras minúsculas concatenadas.
Autenticação de servidor Web do EC2
Este trecho de modelo mostra como obter um arquivo de um bucket S3 privado em uma instância EC2. As credenciais usadas para autenticação são definidas no recurso AWS::CloudFormation::Authentication
e referenciadas pelo recurso AWS::CloudFormation::Init
na seção arquivos.
JSON
"WebServer": { "Type": "AWS::EC2::Instance", "DependsOn" : "BucketPolicy", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "httpd" : [] } }, "files" : { "/var/www/html/index.html" : { "source" : { "Fn::Join" : [ "", [ "http://s3.amazonaws.com/", { "Ref" : "BucketName" }, "/index.html" ] ] }, "mode" : "000400", "owner" : "apache", "group" : "apache", "authentication" : "S3AccessCreds" } }, "services" : { "sysvinit" : { "httpd" : { "enabled" : "true", "ensureRunning" : "true" } } } } }, "AWS::CloudFormation::Authentication" : { "S3AccessCreds" : { "type" : "S3", "accessKeyId" : { "Ref" : "AccessKeyID" }, "secretKey" : { "Ref" : "SecretAccessKey" } } } }, "Properties": {
EC2 Resource Properties ...
} }
YAML
WebServer: Type: AWS::EC2::Instance DependsOn: BucketPolicy Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] files: /var/www/html/index.html: source: !Join - '' - - 'http://s3.amazonaws.com/' - !Ref BucketName - '/index.html' mode: '000400' owner: apache group: apache authentication: S3AccessCreds services: sysvinit: httpd: enabled: 'true' ensureRunning: 'true' AWS::CloudFormation::Authentication: S3AccessCreds: type: S3 accessKeyId: !Ref AccessKeyID secretKey: !Ref SecretAccessKey Properties:
EC2 Resource Properties ...
Especificar a autenticação básica e S3
O exemplo do trecho de modelo inclui dois tipos de autenticação: básica e S3.
JSON
"AWS::CloudFormation::Authentication" : { "testBasic" : { "type" : "basic", "username" : { "Ref" : "UserName" }, "password" : { "Ref" : "Password" }, "uris" : [ "example.com/test" ] }, "testS3" : { "type" : "S3", "accessKeyId" : { "Ref" : "AccessKeyID" }, "secretKey" : { "Ref" : "SecretAccessKey" }, "buckets" : [{ "Fn::Sub": "${BucketName}" }] } }
YAML
AWS::CloudFormation::Authentication: testBasic: type: basic username: !Ref UserName password: !Ref Password uris: - 'example.com/test' testS3: type: S3 accessKeyId: !Ref AccessKeyID secretKey: !Ref SecretAccessKey buckets: - !Sub ${BucketName}
Perfis do IAM
O exemplo a seguir mostra como usar as funções do IAM:
-
myRole
é um recurso AWS::IAM::Role. -
A instância do Amazon EC2 que executa
cfn-init
está associada amyRole
por meio de um perfil da instância. -
O exemplo especifica a autenticação usando a propriedade
buckets
, como na autenticação Amazon S3. Você também pode especificar a autenticação por nome.
JSON
"AWS::CloudFormation::Authentication": { "rolebased" : { "type": "S3", "buckets": [{ "Fn::Sub": "${BucketName}" }], "roleName": { "Ref": "myRole" } } }
YAML
AWS::CloudFormation::Authentication: rolebased: type: S3 buckets: - !Sub ${BucketName} roleName: !Ref myRole