Come configuro la proprietà di una singola pila di una risorsa di AWS:: StepFunctions::Activity in Cloud Formation?
Voglio che la mia risorsa AWS። StepFunctions። Activity sia gestita da una singola pila solo in AWS CloudFormation.
Breve descrizione
È possibile mantenere la proprietà di una risorsa AWS። StepFunctions። Activity da più pile. Ad esempio, puoi creare StackA con il primo modello CloudFormation e StackB con il secondo modello.
Modello per StackA:
AWSTemplateFormatVersion: "2010-09-09" Description: Template for StackA Resources: MyActivity: Type: AWS::StepFunctions::Activity Properties: Name: myActivity
Modello per StackB:
AWSTemplateFormatVersion: "2010-09-09" Description: Template for StackB Resources: MyActivityDuplicate: Type: AWS::StepFunctions::Activity Properties: Name: myActivity Tags: - Key: Key1 Value: Val1 ....
StackA e StackB mostreranno entrambe la risorsa come CREATE_COMPLETE. Tuttavia, la risorsa Attività a cui si fa riferimento in StackA e StackB ha le proprietà definite nel modello per StackA. L'operazione viene visualizzata correttamente, ma le proprietà della risorsa non corrispondono al modello utilizzato da StackA. Quando una delle pile viene eliminata, viene eliminata anche l'attività. Non vi è alcuna indicazione nelle altre pile che la risorsa non esiste più.
Quando si utilizza CloudFormation, è consigliabile assicurarsi che la configurazione di una risorsa condivisa sia mantenuta in una singola pila CloudFormation. In questo modo si fornisce un'unica fonte di verità per la configurazione della risorsa. La pila CloudFormation che gestisce la risorsa condivisa può fornire l'Amazon Resource Name (ARN) della risorsa come output della pila. Quindi, qualsiasi altra pila che dipende dalla risorsa condivisa può fare riferimento alla risorsa condivisa, ad esempio l'attività Step Functions. Per ulteriori informazioni sui riferimenti tra pile, consulta Procedura dettagliata: fare riferimento agli output delle risorse in un’altra pila AWS CloudFormation.
Risoluzione
Per risolvere il problema, completare i seguenti passaggi per ogni risorsa AWS። StepFunctions። Activity gestita in più pile:
1. Identifica gli ARN condivisi in AWS Personal Health Dashboard delle pile CloudFormation che gestiscono la risorsa AWS። StepFunctions። Activity.
2. Designare una delle pile come singola pila per mantenere l'attività in futuro.
Completa i seguenti passaggi all'interno della pila identificata:
1. Se non è presente alcuna sezione Outputs nel modello CloudFormation, aggiungi una sezione Outputs al tuo modello.
2. Aggiungere un nuovo output alla sezione Output. Il nuovo output deve includere quanto segue:
-
Un ID logico univoco per l'output. Ad esempio: myActivityArn. È possibile utilizzare l'ID logico univoco come chiave per l'output nella sezione Output del modello.
-
Una proprietà Value all'interno dell'output della pila. La proprietà Value utilizza Ref con l'ID logico dell'attività come argomento per recuperare l'ARN dell'attività.
-
Una proprietà Export nell'output della pila, con il suo valore come oggetto con una singola proprietà Name. Il valore della proprietà Name è una stringa utilizzata per fare riferimento all'ARN di questa attività da altre pile di CloudFormation. Ad esempio:
AWSTemplateFormatVersion: "2010-09-09" Description: Template for StackA Resources: MyActivity: Type: AWS::StepFunctions::Activity Properties: Name: myActivity Outputs: MyActivityArn: Value: Ref: MyActivity Export: Name: MyActivityArn
3. Aggiorna la tua pila con le modifiche precedenti.
4. Verifica che le risorse che fanno riferimento all'attività utilizzino ancora l'ARN corretto.
Completare i passaggi seguenti per ogni pila che fa riferimento alla risorsa attività:
1. Nella console di CloudFormation, identifica l'ID logico della risorsa attività nella scheda Risorse della pila.
2. Aggiungere una proprietà DeletionPolicy alla dichiarazione delle risorse dell'attività, se la proprietà non è già presente. Impostate il valore su Conserva. Ad esempio:
AWSTemplateFormatVersion: "2010-09-09" Description: Template for StackB Resources: MyActivityDuplicate: Type: AWS::StepFunctions::Activity DeletionPolicy: Retain Properties: Name: myActivity Tags: - Key: Key1 Value: Val1 ...
3. Aggiorna la tua pila con le modifiche precedenti.
4. Determina quali altre risorse nel modello fanno riferimento all'ARN di questa attività.
5. Per ciascuna delle risorse identificate nel passaggio 4, sostituire il riferimento all'ARN dell'attività con la funzione intrinseca Fn። ImportValue. Passare il nome di esportazione specificato quando è stato creato un nuovo output in precedenza come argomento della funzione intrinseca. Ad esempio:
AWSTemplateFormatVersion: "2010-09-09" Description: Template for StackB Resources: # MyActivityDuplicate: # DeletionPolicy: Retain # Type: AWS::StepFunctions::Activity # Properties: # Name: myActivity # Tags: # - Key: Key1 # Value: Val1 MyStateMachine: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: MyStateMachine RoleArn: arn:aws:iam::111122223333:role/service-role/StatesExecutionRole-us-east-1 DefinitionString: Fn::Sub: - | { "Comment": "An example using a Task state.", "StartAt": "getGreeting", "Version": "1.0", "TimeoutSeconds": 300, "States": { "getGreeting": { "Type": "Task", "Resource": "${ActivityArn}", "End": true } } } - ActivityArn: Fn::ImportValue: MyActivityArn
6. Rimuovi la voce per l'attività nella sezione Risorse.
7. Aggiorna la tua pila con le modifiche precedenti.
8. Verifica che le risorse che fanno riferimento all'attività utilizzino ancora l'ARN corretto.
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa