Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Aggiunta e personalizzazione delle risorse dell'ambiente Elastic Beanstalk
Potresti voler personalizzare le risorse dell'ambiente che fanno parte del tuo ambiente Elastic Beanstalk. Ad esempio, potresti voler aggiungere una coda Amazon SQS e un allarme sulla profondità della coda oppure potresti voler aggiungere un cluster Amazon. ElastiCache Includendo un file di configurazione nel bundle di origine, puoi personalizzare agevolmente il tuo ambiente in contemporanea con la distribuzione della versione dell'applicazione.
Puoi usare la Resources
chiave in un file di configurazione per creare e personalizzare AWS le risorse nel tuo ambiente. Le risorse definite nei file di configurazione vengono aggiunte al AWS CloudFormation modello utilizzato per avviare l'ambiente. Sono supportati tutti i tipi di AWS CloudFormation risorse.
Nota
Ogni volta che aggiungi una risorsa non gestita da Elastic Beanstalk, assicurati di aggiungere una policy utente con le autorizzazioni AWS Identity and Access Management appropriate per i tuoi utenti (IAM). Le policy utente gestite fornite da Elastic Beanstalk coprono solo le autorizzazioni per le risorse gestite da Elastic Beanstalk.
Ad esempio, il file di configurazione riportato di seguito consente di aggiungere un hook del ciclo di vita di Auto Scaling al gruppo Auto Scaling predefinito creato da Elastic Beanstalk:
~/my-app/.ebextensions/as-hook.config
Resources:
hookrole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument: {
"Version" : "2012-10-17",
"Statement": [ {
"Effect": "Allow",
"Principal": {
"Service": [ "autoscaling.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
} ]
}
Policies: [ {
"PolicyName": "SNS",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Resource": "*",
"Action": [
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sns:Publish"
]
}
]
}
} ]
hooktopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: "my-email@example.com
"
Protocol: email
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
NotificationTargetARN: { "Ref" : "hooktopic" }
RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
In questo esempio vengono definite tre risorse: hookrole
, hooktopic
e lifecyclehook
. Le prime due risorse sono un ruolo IAM, che concede ad Amazon EC2 Auto Scaling l'autorizzazione a pubblicare messaggi su Amazon SNS, e un argomento SNS, che inoltra i messaggi del gruppo Auto Scaling a un indirizzo e-mail. Elastic Beanstalk crea queste risorse con le proprietà e i tipi specificati.
L'ultima risorsa, lifecyclehook
, è l'hook del ciclo di vita stesso:
lifecyclehook:
Type: AWS::AutoScaling::LifecycleHook
Properties:
AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
NotificationTargetARN: { "Ref" : "hooktopic" }
RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
La definizione dell'hook del ciclo di vita utilizza due funzioni per compilare i valori per le proprietà dell'hook. {
"Ref" : "AWSEBAutoScalingGroup" }
recupera il nome del gruppo Auto Scaling creato da Elastic Beanstalk per l'ambiente. AWSEBAutoScalingGroup
è uno dei nomi di risorsa standard fornito da Elastic Beanstalk.
Per AWS::IAM::Role
, la risorsa Ref
restituisce soltanto il nome del ruolo, non l'ARN. Per ottenere l'ARN del parametro RoleARN
, puoi utilizzare invece un'altra funzione intrinseca, Fn::GetAtt
, in grado di ottenere attributi da una risorsa. RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
ottiene l'attributo Arn
dalla risorsa hookrole
.
{ "Ref" : "hooktopic" }
ottiene l'ARN dell'argomento Amazon SNS creato in precedenza nel file di configurazione. Il valore restituito da Ref
varia in base al tipo di risorsa e può essere trovato nell'argomento della Guida per l' AWS CloudFormation utente relativo al tipo di risorsa. AWS::SNS::Topic