Merge pull request #2 from nonspecialist/develop
Support for environment variable credentials; handle stack creation failure
Showing
2 changed files
with
11 additions
and
0 deletions
... | @@ -40,6 +40,9 @@ Where ``command`` is one of: | ... | @@ -40,6 +40,9 @@ Where ``command`` is one of: |
40 | The ``config file`` is a YAML format file containing all of the information | 40 | The ``config file`` is a YAML format file containing all of the information |
41 | about your Lambda function. | 41 | about your Lambda function. |
42 | 42 | ||
43 | +If you use environment variables for your AWS credentials (as normally supported by boto), | ||
44 | +simply exclude the ``profile`` element from the YAML file. | ||
45 | + | ||
43 | An example project based on a Kinesis stream can be found in | 46 | An example project based on a Kinesis stream can be found in |
44 | [samples/kinesis](https://github.com/garnaat/kappa/tree/develop/samples/kinesis). | 47 | [samples/kinesis](https://github.com/garnaat/kappa/tree/develop/samples/kinesis). |
45 | 48 | ... | ... |
... | @@ -25,11 +25,16 @@ LOG = logging.getLogger(__name__) | ... | @@ -25,11 +25,16 @@ LOG = logging.getLogger(__name__) |
25 | class Kappa(object): | 25 | class Kappa(object): |
26 | 26 | ||
27 | completed_states = ('CREATE_COMPLETE', 'UPDATE_COMPLETE') | 27 | completed_states = ('CREATE_COMPLETE', 'UPDATE_COMPLETE') |
28 | + failed_states = ('ROLLBACK_COMPLETE') | ||
28 | 29 | ||
29 | def __init__(self, config): | 30 | def __init__(self, config): |
30 | self.config = config | 31 | self.config = config |
31 | self.session = botocore.session.get_session() | 32 | self.session = botocore.session.get_session() |
33 | + # otherwise, assume we'll use environment variables | ||
34 | + if 'profile' in config: | ||
32 | self.session.profile = config['profile'] | 35 | self.session.profile = config['profile'] |
36 | + else: | ||
37 | + self.session.profile = None | ||
33 | self.region = config['region'] | 38 | self.region = config['region'] |
34 | 39 | ||
35 | def create_update_roles(self, stack_name, roles_path): | 40 | def create_update_roles(self, stack_name, roles_path): |
... | @@ -63,6 +68,8 @@ class Kappa(object): | ... | @@ -63,6 +68,8 @@ class Kappa(object): |
63 | LOG.debug('Stack status is: %s', status) | 68 | LOG.debug('Stack status is: %s', status) |
64 | if status in self.completed_states: | 69 | if status in self.completed_states: |
65 | done = True | 70 | done = True |
71 | + if status in self.failed_states: | ||
72 | + raise ValueError('Could not create stack %s: %s' % (stack_name, status)) | ||
66 | 73 | ||
67 | def get_role_arn(self, role_name): | 74 | def get_role_arn(self, role_name): |
68 | role_arn = None | 75 | role_arn = None |
... | @@ -231,6 +238,7 @@ class Kappa(object): | ... | @@ -231,6 +238,7 @@ class Kappa(object): |
231 | self.config['lambda']['zipfile_name'], | 238 | self.config['lambda']['zipfile_name'], |
232 | self.config['lambda']['path']) | 239 | self.config['lambda']['path']) |
233 | self.upload_lambda_function(self.config['lambda']['zipfile_name']) | 240 | self.upload_lambda_function(self.config['lambda']['zipfile_name']) |
241 | + self.add_event_source() | ||
234 | 242 | ||
235 | def test(self): | 243 | def test(self): |
236 | self._invoke_asynch(self.config['lambda']['test_data']) | 244 | self._invoke_asynch(self.config['lambda']['test_data']) | ... | ... |
-
Please register or login to post a comment