Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Registrar un Hook personalizado con AWS CloudFormation
Una vez que hayas creado un Hook personalizado, tendrás que registrarlo AWS CloudFormation para poder usarlo. En esta sección, aprenderás a empaquetar y registrar tu Hook para usarlo en tu Cuenta de AWS.
Package a Hook (Java)
Si has desarrollado tu Hook con Java, usa Maven para empaquetarlo.
En el directorio de tu proyecto Hook, ejecuta el siguiente comando para compilar tu Hook, ejecuta pruebas unitarias y empaqueta tu proyecto como un JAR
archivo que puedas usar para enviar tu Hook al CloudFormation registro.
mvn clean package
Registra un Hook personalizado
Para registrar un Hook
-
(Opcional) Configure su Región de AWS nombre predeterminado para
us-west-2
, enviando el configureoperación.$
aws configureAWS Access Key ID [None]:
<Your Access Key ID>
AWS Secret Access Key [None]:
<Your Secret Key>
Default region name [None]:
us-west-2
Default output format [None]:
json
-
(Opcional) El siguiente comando compila y empaqueta tu proyecto Hook sin registrarlo.
$
cfn submit --dry-run -
Registra tu Hook usando el CloudFormation CLI submitoperación.
$
cfn submit --set-defaultEl comando devuelve el siguiente comando:
{‘ProgressStatus’: ‘COMPLETE’}
Resultados: Has registrado correctamente tu Hook.
Verificación de que los Hooks estén accesibles en tu cuenta
Comprueba que tu Hook esté disponible en tu región Cuenta de AWS y en las regiones a las que lo has enviado.
-
Para verificar tu Hook, usa el list-typescomando para enumerar tu Hook recién registrado y devolver una descripción resumida del mismo.
$
aws cloudformation list-typesEl comando devuelve el siguiente resultado y también te mostrará los Hooks disponibles públicamente que puedes activar en tu región Cuenta de AWS y en tu región.
{ "TypeSummaries": [ { "Type": "HOOK", "TypeName": "MyCompany::Testing::MyTestHook", "DefaultVersionId": "00000001", "TypeArn": "arn:aws:cloudformation:us-west-2:
ACCOUNT_ID
/type/hook/MyCompany-Testing-MyTestHook", "LastUpdated": "2021-08-04T23:00:03.058000+00:00", "Description": "Verifies S3 bucket and SQS queues properties before creating or updating" } ] } -
Recupera el
TypeArn
archivo delist-type
salida de tu Hook y guárdalo.export HOOK_TYPE_ARN=arn:aws:cloudformation:us-west-2:
ACCOUNT_ID
/type/hook/MyCompany-Testing-MyTestHook
Para obtener información sobre cómo publicar Hooks para uso público, consultePublicar ganchos para uso público.
Configurar Hooks
Una vez que hayas desarrollado y registrado tu Hook, puedes configurarlo en tu Hook Cuenta de AWS publicándolo en el registro.
-
Para configurar un Hook en tu cuenta, usa el SetTypeConfigurationoperación. Esta operación habilita las propiedades del enlace que se definen en la sección
properties
del esquema del enlace. En el siguiente ejemplo, laminBuckets
propiedad se establece1
en la configuración.nota
Al habilitar Hooks en tu cuenta, autorizas a un Hook a usar los permisos definidos por ti Cuenta de AWS. CloudFormation elimina los permisos no necesarios antes de pasarlos al Hook. CloudFormation recomienda a los clientes o usuarios de Hook que revisen los permisos de Hook y sepan qué permisos tienen los Hooks antes de habilitar los Hooks en su cuenta.
Especifica los datos de configuración de tu extensión Hook registrada en la misma cuenta y Región de AWS.
$
aws cloudformation set-type-configuration --region us-west-2 --configuration '{"CloudFormationConfiguration":{"HookConfiguration":{"HookInvocationStatus":"ENABLED","FailureMode":"FAIL","Properties":{"minBuckets": "1","minQueues": "1", "encryptionAlgorithm": "aws:kms"}}}}' --type-arn $HOOK_TYPE_ARN
importante
Para que tu Hook pueda inspeccionar de forma proactiva la configuración de tu pila, debes
HookInvocationStatus
establecer el valorENABLED
en laHookConfiguration
sección una vez que el Hook se haya registrado y activado en tu cuenta.
Acceder a AWS APIs los controladores
Si tus Hooks utilizan un AWS API en alguno de sus controladores, el CFN - crea CLI automáticamente una plantilla de roles de IAM ejecución,. hook-role.yaml
La hook-role.yaml
plantilla se basa en los permisos especificados para cada controlador en la sección correspondiente al controlador del esquema de Hook. Si la --role-arn
bandera no se utiliza durante el generateoperación, la función de esta pila se aprovisionará y se utilizará como función de ejecución del Hook.
Para obtener más información, consulta Acceder AWS APIs desde un tipo de recurso.
plantilla hook-role.yaml
nota
Si opta por crear su propio rol de ejecución, le recomendamos encarecidamente que practique el principio del privilegio mínimo al permitir publicar solo y. hooks.cloudformation.amazonaws.com
resources.cloudformation.amazonaws.com
La siguiente plantilla utiliza IAM los SQS permisos Amazon S3 y Amazon.
AWSTemplateFormatVersion: 2010-09-09 Description: > This CloudFormation template creates a role assumed by CloudFormation during Hook operations on behalf of the customer. Resources: ExecutionRole: Type: 'AWS::IAM::Role' Properties: MaxSessionDuration: 8400 AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - resources.cloudformation.amazonaws.com - hooks.cloudformation.amazonaws.com Action: 'sts:AssumeRole' Condition: StringEquals: aws:SourceAccount: !Ref AWS::AccountId StringLike: aws:SourceArn: !Sub arn:${AWS::Partition}:cloudformation:${AWS::Region}:${AWS::AccountId}:type/hook/MyCompany-Testing-MyTestHook/* Path: / Policies: - PolicyName: HookTypePolicy PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - 's3:GetEncryptionConfiguration' - 's3:ListBucket' - 's3:ListAllMyBuckets' - 'sqs:GetQueueAttributes' - 'sqs:GetQueueUrl' - 'sqs:ListQueues' Resource: '*' Outputs: ExecutionRoleArn: Value: !GetAtt - ExecutionRole - Arn