I have a simple S3 bucket 'MyBucket' declared alongside an IAM Role 'MyBucketRole', if I attempt to access the bucket's ARN via:
{ "Fn::GetAtt": ["MyBucket", "Arn"] }
it will throw:
Template error: resource MyBucket does not support attribute type Arn in Fn::GetAtt

However, if I attempt to access the ARN via:
{ "Fn::GetAtt": [{"Fn::GetAtt": ["MyBucket", "BucketName"]}, "Arn"] }
it works fine.

Under normal Serverless circumstance the first option works fine, am I being silly or is this a legitimate/known issue?

It also appears that the working version only works if the resource is already deployed. If attempting to launch both bucket and role attached to bucket at the same time, results in the following error:

ERROR:localstack.services.cloudformation.cloudformation_starter: Unable to parse and create resource "MyBucketRole": unhashable type: 'dict'

Serverless also throws a 500 error.

**The following log may also help**, 
This occurs when attempting to get the resource's ARN upon launching it in the same stack as the role attempting to reference it:

```
2019-09-09T13:22:54:ERROR:localstack.services.cloudformation.cloudformation_starter: Unable to parse and create resource "MyBucketRole": 400 Bad Request: <ErrorResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
  <Error>
    <Type>Sender</Type>
    <Code>ValidationError</Code>
    <Message>Template error: resource MyBucket does not support attribute type Arn in Fn::GetAtt</Message>
  </Error>
  <RequestId>cf4c737e-5ae2-11e4-a7c9-ad44eEXAMPLE</RequestId>
</ErrorResponse>
```
if topic_arn not in SNS_TAGS:
        SNS_TAGS[topic_arn] = []
    return SNS_TAGS[topic_arn]
def do_list_tags_for_resource(topic_arn):
    return _get_tags(topic_arn)
def do_tag_resource(topic_arn, tags):
    _get_tags(topic_arn).extend(tags)
def do_untag_resource(topic_arn, tag_keys):
    SNS_TAGS[topic_arn] = [t for t in _get_tags(topic_arn) if t['Key'] not in tag_keys]
def get_topic_by_arn(topic_arn):
    return SNS_SUBSCRIPTIONS.get(topic_arn)
def get_subscription_by_arn(sub_arn):
    
    for key, subscriptions in SNS_SUBSCRIPTIONS.items():
        for sub in subscriptions:
            if sub['SubscriptionArn'] == sub_arn:
                return sub
def make_response(op_name, content=''):
    response = Response()
    if not content:
        content = '<MessageId>%s</MessageId>' % short_uid()
    response._content = """<{op_name}Response xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
        <{op_name}Result>
            {content}
        </{op_name}Result>
        <ResponseMetadata><RequestId>{req_id}</RequestId></ResponseMetadata>
        </{op_name}Response>""".format(op_name=op_name, content=content, req_id=short_uid())
    response.status_code = 200
    return response
def make_error(message, code=400, code_string='InvalidParameter'):