AWS::CloudFormation::Authentication
Utilice el recurso AWS::CloudFormation::Authentication
para especificar las credenciales de autenticación de los archivos u orígenes indicados mediante el recurso AWS::CloudFormation::Init.
Si desea incluir información de autenticación para un archivo u origen especificados con AWS::CloudFormation::Init
, utilice la propiedad uris
si el origen es un URI o la propiedad buckets
si el origen es un bucket de Amazon S3. Para obtener más información sobre archivos, consulte Archivos. Para obtener más información sobre orígenes, consulte Orígenes.
También puede especificar información de autenticación para los archivos directamente en el recurso AWS::CloudFormation::Init
. La clave de los archivos del recurso contiene una propiedad denominada authentication
. Puede utilizar la propiedad authentication
para asociar información de autenticación definida en un recurso AWS::CloudFormation::Authentication
directamente a un archivo.
Para archivos, AWS CloudFormation buscará información de autenticación en el siguiente orden:
-
La propiedad
authentication
de la claveAWS::CloudFormation::Init
defiles
. -
La propiedad
uris
obuckets
del recursoAWS::CloudFormation::Authentication
Para orígenes, CloudFormation busca información de autenticación en la propiedad uris
o buckets
del recurso AWS::CloudFormation::Authentication
.
Sintaxis
Para declarar esta entidad en su plantilla de CloudFormation, use la siguiente sintaxis:
Debe ser consciente de las consideraciones siguientes al usar el tipo AWS::CloudFormation::Authentication
:
-
A diferencia de la mayoría de los recursos de CloudFormation, el tipo
AWS::CloudFormation::Authentication
no contiene un bloque denominado Properties, sino que contiene una lista de bloques con nombres asignados por el usuario, cada uno con sus propias propiedades de autenticación.No todas las propiedades pertenecen a cada tipo de autenticación, consulte la propiedad type para obtener más detalles.
-
A diferencia de la mayoría de los recursos de CloudFormation, los nombres de las propiedades usan minúsculas.
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
Propiedades
accessKeyId
-
Especifica el ID de clave de acceso para la autenticación de S3.
Obligatorio: condicional. Únicamente puede especificarse si se ha establecido la propiedad
type
enS3
.Tipo: cadena
buckets
-
Una lista delimitada por comas de buckets de Amazon S3 para asociar a las credenciales de autenticación de S3.
Obligatorio: condicional. Únicamente puede especificarse si se ha establecido la propiedad
type
enS3
.Tipo: lista de valores de cadena
password
-
Especifica la contraseña de autenticación básica.
Obligatorio: condicional. Únicamente puede especificarse si se ha establecido la propiedad type en
basic
.Tipo: cadena
secretKey
-
Especifica la clave secreta para la autenticación de S3.
Obligatorio: condicional. Únicamente puede especificarse si se ha establecido la propiedad
type
enS3
.Tipo: cadena
type
-
Especifica si el esquema de autenticación usa un nombre de usuario y una contraseña (básica) o un ID de clave de acceso y una clave secreta (S3).
Si especifica
basic
, especifique las propiedadesusername
,password
yuris
.Si especifica
S3
, especifique las propiedadesaccessKeyId
,secretKey
ybuckets
(opcional).Obligatorio: sí
Valores válidos:
basic
|S3
uris
-
Una lista delimitada por comas de URI para asociar a las credenciales de autenticación básicas. La autorización se aplica al URI especificado y cualquier URI más específico. Por ejemplo, si especifica
http://www.example.com
, la autorización también se aplicará ahttp://www.example.com/test
.Obligatorio: condicional. Únicamente puede especificarse si se ha establecido la propiedad
type
enbasic
.Tipo: lista de valores de cadena
username
-
Especifica el nombre de usuario de autenticación básica.
Obligatorio: condicional. Únicamente puede especificarse si se ha establecido la propiedad type en
basic
.Tipo: cadena
roleName
-
Describe el rol para la autenticación basada en roles.
importante
Este rol debe estar incluido en el perfil de instancia que está asociado a la instancia de EC2. Un perfil de instancia solo puede contener un rol de IAM.
Obligatorio: condicional. Únicamente puede especificarse si se ha establecido la propiedad
type
enS3
.Tipo: cadena.
Ejemplos
nota
A diferencia de la mayoría de los recursos, el tipo AWS::CloudFormation::Authentication
define una lista de bloques con nombres asignados por el usuario. Cada uno de estos contiene propiedades de autenticación que usan nombres compuestos con la inicial en minúsculas.
Autenticación del servidor web de EC2
Este fragmento de código de plantilla muestra cómo obtener un archivo a partir de un bucket de S3 privado dentro de una instancia de EC2. Las credenciales utilizadas para la autenticación se definen en el recurso AWS::CloudFormation::Authentication
; el recurso AWS::CloudFormation::Init
hace referencia a ellas en la sección archivos.
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 ...
Especificación de autenticación básica y S3
El siguiente fragmento de código de plantilla de ejemplo incluye tipos de autenticación básica y 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}
Roles de IAM
El siguiente ejemplo muestra cómo utilizar los roles de IAM:
-
myRole
es un recurso AWS::IAM::Role. -
La instancia Amazon EC2 que ejecuta
cfn-init
está asociada amyRole
a través de un perfil de instancia. -
El ejemplo especifica la autenticación mediante la propiedad
buckets
, como en la autenticación de Amazon S3. También puede especificar la autenticación por nombre.
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