SQS - Use full URL as the physical resource ID (#4864)
This commit is contained in:
parent
871591f7f1
commit
f49c81037b
@ -37,7 +37,7 @@ from .exceptions import (
|
|||||||
InvalidAttributeValue,
|
InvalidAttributeValue,
|
||||||
)
|
)
|
||||||
|
|
||||||
from moto.core import ACCOUNT_ID as DEFAULT_ACCOUNT_ID
|
from moto.core import ACCOUNT_ID
|
||||||
|
|
||||||
DEFAULT_SENDER_ID = "AIDAIT2UOQQY3AUEKVGXU"
|
DEFAULT_SENDER_ID = "AIDAIT2UOQQY3AUEKVGXU"
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ class Queue(CloudFormationModel):
|
|||||||
now = unix_time()
|
now = unix_time()
|
||||||
self.created_timestamp = now
|
self.created_timestamp = now
|
||||||
self.queue_arn = "arn:aws:sqs:{0}:{1}:{2}".format(
|
self.queue_arn = "arn:aws:sqs:{0}:{1}:{2}".format(
|
||||||
self.region, DEFAULT_ACCOUNT_ID, self.name
|
self.region, ACCOUNT_ID, self.name
|
||||||
)
|
)
|
||||||
self.dead_letter_queue = None
|
self.dead_letter_queue = None
|
||||||
|
|
||||||
@ -454,8 +454,11 @@ class Queue(CloudFormationModel):
|
|||||||
def delete_from_cloudformation_json(
|
def delete_from_cloudformation_json(
|
||||||
cls, resource_name, cloudformation_json, region_name
|
cls, resource_name, cloudformation_json, region_name
|
||||||
):
|
):
|
||||||
|
# ResourceName will be the full queue URL - we only need the name
|
||||||
|
# https://sqs.us-west-1.amazonaws.com/123456789012/queue_name
|
||||||
|
queue_name = resource_name.split("/")[-1]
|
||||||
sqs_backend = sqs_backends[region_name]
|
sqs_backend = sqs_backends[region_name]
|
||||||
sqs_backend.delete_queue(resource_name)
|
sqs_backend.delete_queue(queue_name)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def approximate_number_of_messages_delayed(self):
|
def approximate_number_of_messages_delayed(self):
|
||||||
@ -471,7 +474,7 @@ class Queue(CloudFormationModel):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def physical_resource_id(self):
|
def physical_resource_id(self):
|
||||||
return self.name
|
return f"https://sqs.{self.region}.amazonaws.com/{ACCOUNT_ID}/{self.name}"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def attributes(self):
|
def attributes(self):
|
||||||
@ -505,7 +508,7 @@ class Queue(CloudFormationModel):
|
|||||||
|
|
||||||
def url(self, request_url):
|
def url(self, request_url):
|
||||||
return "{0}://{1}/{2}/{3}".format(
|
return "{0}://{1}/{2}/{3}".format(
|
||||||
request_url.scheme, request_url.netloc, DEFAULT_ACCOUNT_ID, self.name
|
request_url.scheme, request_url.netloc, ACCOUNT_ID, self.name
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -62,7 +62,7 @@ def test_describe_stack_subresources():
|
|||||||
for s in stack.resource_summaries.all():
|
for s in stack.resource_summaries.all():
|
||||||
s.resource_type.should.equal("AWS::SQS::Queue")
|
s.resource_type.should.equal("AWS::SQS::Queue")
|
||||||
s.logical_id.should.equal("QueueGroup")
|
s.logical_id.should.equal("QueueGroup")
|
||||||
s.physical_resource_id.should.equal(q_name)
|
s.physical_resource_id.should.contain(f"/{q_name}")
|
||||||
|
|
||||||
|
|
||||||
@mock_sqs
|
@mock_sqs
|
||||||
@ -83,7 +83,8 @@ def test_list_stack_resources():
|
|||||||
|
|
||||||
queue.should.have.key("ResourceType").equal("AWS::SQS::Queue")
|
queue.should.have.key("ResourceType").equal("AWS::SQS::Queue")
|
||||||
queue.should.have.key("LogicalResourceId").should.equal("QueueGroup")
|
queue.should.have.key("LogicalResourceId").should.equal("QueueGroup")
|
||||||
queue.should.have.key("PhysicalResourceId").should.equal(q_name)
|
expected_url = f"https://sqs.us-east-1.amazonaws.com/{ACCOUNT_ID}/{q_name}"
|
||||||
|
queue.should.have.key("PhysicalResourceId").should.equal(expected_url)
|
||||||
|
|
||||||
|
|
||||||
@mock_sqs
|
@mock_sqs
|
||||||
@ -96,7 +97,7 @@ def test_create_from_cloudformation_json_with_tags():
|
|||||||
cf.create_stack(StackName=stack_name, TemplateBody=sqs_template_with_tags)
|
cf.create_stack(StackName=stack_name, TemplateBody=sqs_template_with_tags)
|
||||||
|
|
||||||
response = cf.describe_stack_resources(StackName=stack_name)
|
response = cf.describe_stack_resources(StackName=stack_name)
|
||||||
q_name = response["StackResources"][0]["PhysicalResourceId"]
|
q_name = response["StackResources"][0]["PhysicalResourceId"].split("/")[-1]
|
||||||
|
|
||||||
all_urls = client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]
|
all_urls = client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]
|
||||||
queue_url = [url for url in all_urls if url.endswith(q_name)][0]
|
queue_url = [url for url in all_urls if url.endswith(q_name)][0]
|
||||||
|
Loading…
Reference in New Issue
Block a user