Support IAM account alias (#1088)
This commit is contained in:
parent
0c3708a8e7
commit
ee4ca0c39a
@ -507,6 +507,7 @@ class IAMBackend(BaseBackend):
|
|||||||
self.users = {}
|
self.users = {}
|
||||||
self.credential_report = None
|
self.credential_report = None
|
||||||
self.managed_policies = self._init_managed_policies()
|
self.managed_policies = self._init_managed_policies()
|
||||||
|
self.account_aliases = []
|
||||||
super(IAMBackend, self).__init__()
|
super(IAMBackend, self).__init__()
|
||||||
|
|
||||||
def _init_managed_policies(self):
|
def _init_managed_policies(self):
|
||||||
@ -957,5 +958,15 @@ class IAMBackend(BaseBackend):
|
|||||||
report += self.users[user].to_csv()
|
report += self.users[user].to_csv()
|
||||||
return base64.b64encode(report.encode('ascii')).decode('ascii')
|
return base64.b64encode(report.encode('ascii')).decode('ascii')
|
||||||
|
|
||||||
|
def list_account_aliases(self):
|
||||||
|
return self.account_aliases
|
||||||
|
|
||||||
|
def create_account_alias(self, alias):
|
||||||
|
# alias is force updated
|
||||||
|
self.account_aliases = [alias]
|
||||||
|
|
||||||
|
def delete_account_alias(self, alias):
|
||||||
|
self.account_aliases = []
|
||||||
|
|
||||||
|
|
||||||
iam_backend = IAMBackend()
|
iam_backend = IAMBackend()
|
||||||
|
@ -478,6 +478,23 @@ class IamResponse(BaseResponse):
|
|||||||
template = self.response_template(CREDENTIAL_REPORT)
|
template = self.response_template(CREDENTIAL_REPORT)
|
||||||
return template.render(report=report)
|
return template.render(report=report)
|
||||||
|
|
||||||
|
def list_account_aliases(self):
|
||||||
|
aliases = iam_backend.list_account_aliases()
|
||||||
|
template = self.response_template(LIST_ACCOUNT_ALIASES_TEMPLATE)
|
||||||
|
return template.render(aliases=aliases)
|
||||||
|
|
||||||
|
def create_account_alias(self):
|
||||||
|
alias = self._get_param('AccountAlias')
|
||||||
|
iam_backend.create_account_alias(alias)
|
||||||
|
template = self.response_template(CREATE_ACCOUNT_ALIAS_TEMPLATE)
|
||||||
|
return template.render()
|
||||||
|
|
||||||
|
def delete_account_alias(self):
|
||||||
|
alias = self._get_param('AccountAlias')
|
||||||
|
iam_backend.delete_account_alias(alias)
|
||||||
|
template = self.response_template(DELETE_ACCOUNT_ALIAS_TEMPLATE)
|
||||||
|
return template.render()
|
||||||
|
|
||||||
|
|
||||||
ATTACH_ROLE_POLICY_TEMPLATE = """<AttachRolePolicyResponse>
|
ATTACH_ROLE_POLICY_TEMPLATE = """<AttachRolePolicyResponse>
|
||||||
<ResponseMetadata>
|
<ResponseMetadata>
|
||||||
@ -1192,3 +1209,32 @@ LIST_MFA_DEVICES_TEMPLATE = """<ListMFADevicesResponse>
|
|||||||
<RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId>
|
<RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId>
|
||||||
</ResponseMetadata>
|
</ResponseMetadata>
|
||||||
</ListMFADevicesResponse>"""
|
</ListMFADevicesResponse>"""
|
||||||
|
|
||||||
|
|
||||||
|
LIST_ACCOUNT_ALIASES_TEMPLATE = """<ListAccountAliasesResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">
|
||||||
|
<ListAccountAliasesResult>
|
||||||
|
<IsTruncated>false</IsTruncated>
|
||||||
|
<AccountAliases>
|
||||||
|
{% for alias in aliases %}
|
||||||
|
<member>{{ alias }}</member>
|
||||||
|
{% endfor %}
|
||||||
|
</AccountAliases>
|
||||||
|
</ListAccountAliasesResult>
|
||||||
|
<ResponseMetadata>
|
||||||
|
<RequestId>c5a076e9-f1b0-11df-8fbe-45274EXAMPLE</RequestId>
|
||||||
|
</ResponseMetadata>
|
||||||
|
</ListAccountAliasesResponse>"""
|
||||||
|
|
||||||
|
|
||||||
|
CREATE_ACCOUNT_ALIAS_TEMPLATE = """<CreateAccountAliasResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">
|
||||||
|
<ResponseMetadata>
|
||||||
|
<RequestId>36b5db08-f1b0-11df-8fbe-45274EXAMPLE</RequestId>
|
||||||
|
</ResponseMetadata>
|
||||||
|
</CreateAccountAliasResponse>"""
|
||||||
|
|
||||||
|
|
||||||
|
DELETE_ACCOUNT_ALIAS_TEMPLATE = """<DeleteAccountAliasResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">
|
||||||
|
<ResponseMetadata>
|
||||||
|
<RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId>
|
||||||
|
</ResponseMetadata>
|
||||||
|
</DeleteAccountAliasResponse>"""
|
||||||
|
20
tests/test_iam/test_iam_account_aliases.py
Normal file
20
tests/test_iam/test_iam_account_aliases.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import boto3
|
||||||
|
import sure # noqa
|
||||||
|
from moto import mock_iam
|
||||||
|
|
||||||
|
|
||||||
|
@mock_iam()
|
||||||
|
def test_account_aliases():
|
||||||
|
client = boto3.client('iam', region_name='us-east-1')
|
||||||
|
|
||||||
|
alias = 'my-account-name'
|
||||||
|
aliases = client.list_account_aliases()
|
||||||
|
aliases.should.have.key('AccountAliases').which.should.equal([])
|
||||||
|
|
||||||
|
client.create_account_alias(AccountAlias=alias)
|
||||||
|
aliases = client.list_account_aliases()
|
||||||
|
aliases.should.have.key('AccountAliases').which.should.equal([alias])
|
||||||
|
|
||||||
|
client.delete_account_alias(AccountAlias=alias)
|
||||||
|
aliases = client.list_account_aliases()
|
||||||
|
aliases.should.have.key('AccountAliases').which.should.equal([])
|
Loading…
Reference in New Issue
Block a user