0

Wenn ich eine SQS Queue über Cloudformation erstelle, können Sie eine zweite QueuePolicy anhängen, nachdem die SQS Queue erstellt wurde?Amazon AWS SQS - QueuePolicy auf vorhandene Queue anwenden

wenn ich dieses folgende Config laufen:

Resources: 
    SQSQueue: 
    Properties: 
     QueueName: !Ref SQSQueuename 
    Type: 'AWS::SQS::Queue' 
    QueuePolicy: 
    Type: 'AWS::SQS::QueuePolicy' 
    Properties: 
     PolicyDocument: 
     Id: !Ref SQSQueuename 
     Statement: 
      - Sid: QueuePolicy2-SendMessage-To-Queue-From-SNS-Topic 
      Effect: Allow 
      Principal: 
       AWS: !Ref AccountID 
      Action: 
       - 'sqs:*' 
      Resource: 'arn:aws:sqs:eu-central-1:123456789010:${SQSQueuename}' 
     Queues: 
     - !Ref SQSQueue 
    DependsOn: 
    - SQSQueue 

Sind ich in der Lage bin eine andere QueuePolicy der erstellten Queue als Anlage zu erstellen? Und wie würde ich es anhängen? Über ARN?

Resources: 
    SecondQueuePolicy: 
    Type: 'AWS::SQS::QueuePolicy' 
    Properties: 
     PolicyDocument: 
     Id: !Ref SQSQueuename 
     Statement: 
      - Sid: QueuePolicy2-SendMessage-To-Queue-From-SNS-Topic 
      Effect: Allow 
      Principal: 
       AWS: !Ref AccountID 
      Action: 
       - 'sqs:*' 
      Resource: 'arn:aws:sqs:eu-central-1:123456789010:${SQSQueuename}' 
     Queues: 
     - !Ref SQSQueue <-- how do i ref to the Queue ? 
    DependsOn: 
    - SQSQueue 
+0

Ist die zweite Richtlinie Teil eines zweiten CloudFormation-Stacks? Wenn das der Fall ist, können Sie 'Fn :: ImportValue' verwenden. – kichik

Antwort

0

In Ihrer ersten Vorlage sicherstellen, dass Sie die Warteschlange URL und den Namen exportieren:

Outputs: 
    QueueURL: 
    Value: !Ref SQSQueue 
    Export: 
     Name: ExampleStack-QueueURL 
    QueueName: 
    Value: !GetAtt SQSQueue.QueueName 
    Export: 
     Name: ExampleStack-QueueName 

In der zweiten Vorlage importiert die neu exportierten Werte (keine Notwendigkeit für DependsOn):

SecondQueuePolicy: 
    Type: 'AWS::SQS::QueuePolicy' 
    Properties: 
     PolicyDocument: 
     Id: !Ref SQSQueuename 
     Statement: 
      - Sid: QueuePolicy2-SendMessage-To-Queue-From-SNS-Topic 
      Effect: Allow 
      Principal: 
       AWS: !Ref AccountID 
      Action: 
       - 'sqs:*' 
      Resource: 
       Fn::Sub: 
       - 'arn:aws:sqs:eu-central-1:123456789010:${QueueName}' 
       - QueueName: 
        Fn::ImportValue: ExampleStack-QueueName 
     Queues: 
     - Fn::ImportValue: ExampleStack-QueueURL