{"action":"created","issue":{"url":"https://api.github.com/repos/aws/aws-sdk-net/issues/961","repository_url":"https://api.github.com/repos/aws/aws-sdk-net","labels_url":"https://api.github.com/repos/aws/aws-sdk-net/issues/961/labels{/name}","comments_url":"https://api.github.com/repos/aws/aws-sdk-net/issues/961/comments","events_url":"https://api.github.com/repos/aws/aws-sdk-net/issues/961/events","html_url":"https://github.com/aws/aws-sdk-net/pull/961","id":325517583,"node_id":"MDExOlB1bGxSZXF1ZXN0MTg5ODM0MTU4","number":961,"title":"New Extensions.Configuration.AWSSystemsManager for reading ASP.Net Core configuration values from Systems Manager Parameter Store","user":{"login":"KenHundley","id":2495780,"node_id":"MDQ6VXNlcjI0OTU3ODA=","avatar_url":"https://avatars0.githubusercontent.com/u/2495780?v=4","gravatar_id":"","url":"https://api.github.com/users/KenHundley","html_url":"https://github.com/KenHundley","followers_url":"https://api.github.com/users/KenHundley/followers","following_url":"https://api.github.com/users/KenHundley/following{/other_user}","gists_url":"https://api.github.com/users/KenHundley/gists{/gist_id}","starred_url":"https://api.github.com/users/KenHundley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KenHundley/subscriptions","organizations_url":"https://api.github.com/users/KenHundley/orgs","repos_url":"https://api.github.com/users/KenHundley/repos","events_url":"https://api.github.com/users/KenHundley/events{/privacy}","received_events_url":"https://api.github.com/users/KenHundley/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2018-05-23T01:31:58Z","updated_at":"2018-07-16T23:21:50Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/aws/aws-sdk-net/pulls/961","html_url":"https://github.com/aws/aws-sdk-net/pull/961","diff_url":"https://github.com/aws/aws-sdk-net/pull/961.diff","patch_url":"https://github.com/aws/aws-sdk-net/pull/961.patch"},"body":"## Description\r\nI created this project as a way for an ASP.Net Core application to read some or all of it's configuration values from the Systems Manager Parameter Store. This is built on top of the Microsoft Configuration Extensions framework and is identical in use to `.AddEnvironmentVariables()`, `.AddJsonFile(\"path\")`, etc. \r\n\r\nThe basic configuration values are:\r\n* Path: Path that will be queried (recursively) in Systems Manager\r\n  * Required: maps to the path in `.GetParametersByPathAsync`\r\n* AWSOptions: Lets you specify the credential options used to communicate with Systems Manager\r\n  * Optional: Will attempt to create one for you if not supplied\r\n* ReloadAfter: TimeSpan for how often to reload the parameters from Systems Manager\r\n  * Optional: Used with `IOptionsSnapshot` to re-retrieve values that may change over time\r\n* OnLoadException: Delegate for capturing errors encountered while calling Systems Manager\r\n  * Optional: Lets the application respond to captured exceptions, as well as choosing to ignore them (not throw them)\r\n\r\nSample use (although there are many configurations available)\r\n```csharp\r\n.ConfigureAppConfiguration(builder =>\r\n{\r\n    builder.AddAWSSystemsManager(\"/myapp/dev/\");\r\n})\r\n```\r\n\r\nRelated to Question: https://github.com/aws/aws-sdk-net/issues/940\r\n\r\n## Motivation and Context\r\nGreatly simplifies using Systems Manager Parameter Store as a source for configuration information for an ASP.Net Core application.\r\n\r\n## Testing\r\nI have tested this library code by utilizing it in an ASP.Net Core Web API project. I have tested all the configurations and also left it running for multiple days to look for any issues that could be encountered over time. \r\n\r\nI have also added unit tests for all the new code, with one caveat. Since the code relies on `awsOptions.CreateServiceClient<IAmazonSimpleSystemsManagement>()` but there aren't any interfaces on AWSOptions for mocking this call I had to create an internal class that wraps these operations in an injectable way. However, when I was done it worked like a charm and I was able to mock out those dependencies without changing AWSOptions to match\r\n\r\n## Types of changes\r\n<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [x] New feature (non-breaking change which adds functionality) **(completely new project)**\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n\r\n## Checklist\r\n<!--- Go over all the following points, and put an `x` in all the boxes that apply -->\r\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n- [x] My code follows the code style of this project\r\n- [x] My change requires a change to the documentation\r\n- [x] I have updated the documentation accordingly\r\n  **(projects like AWSSDK.Extensions.NETCore.Setup aren't currently documented in the README.md, so I did not add this project, however, I did fully document the code with XML Docs)**\r\n- [x] I have read the **README** document\r\n- [x] I have added tests to cover my changes\r\n- [x] All new and existing tests passed \r\n  **(completely new project, all new tests pass)**\r\n\r\n## Open Items\r\n* I was not sure how to version this since it's brand new. Normally this would be 1.0.0, but in this case it encompassed in a larger project. I'm hoping you can help resolve this\r\n* I created a nuspec file for this, but you may want to review the text I used. I tried to follow the examples from NETCore.Setup.\r\n\r\n## License\r\n<!--- The SDK is released under the [Apache 2.0 license][license], so any code you submit will be released under that license -->\r\n<!--- For substantial contributions, we may ask you to sign a [Contributor License Agreement (CLA)][cla] -->\r\n<!--- Put an `x` in the below box if you confirm that this request can be released under the Apache 2 license -->\r\n- [x] I confirm that this pull request can be released under the Apache 2 license\r\n\r\n[issues]: https://github.com/aws/aws-sdk-net/issues\r\n[license]: http://aws.amazon.com/apache2.0/\r\n[cla]: http://en.wikipedia.org/wiki/Contributor_License_Agreement"},"comment":{"url":"https://api.github.com/repos/aws/aws-sdk-net/issues/comments/405410698","html_url":"https://github.com/aws/aws-sdk-net/pull/961#issuecomment-405410698","issue_url":"https://api.github.com/repos/aws/aws-sdk-net/issues/961","id":405410698,"node_id":"MDEyOklzc3VlQ29tbWVudDQwNTQxMDY5OA==","user":{"login":"KenHundley","id":2495780,"node_id":"MDQ6VXNlcjI0OTU3ODA=","avatar_url":"https://avatars0.githubusercontent.com/u/2495780?v=4","gravatar_id":"","url":"https://api.github.com/users/KenHundley","html_url":"https://github.com/KenHundley","followers_url":"https://api.github.com/users/KenHundley/followers","following_url":"https://api.github.com/users/KenHundley/following{/other_user}","gists_url":"https://api.github.com/users/KenHundley/gists{/gist_id}","starred_url":"https://api.github.com/users/KenHundley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KenHundley/subscriptions","organizations_url":"https://api.github.com/users/KenHundley/orgs","repos_url":"https://api.github.com/users/KenHundley/repos","events_url":"https://api.github.com/users/KenHundley/events{/privacy}","received_events_url":"https://api.github.com/users/KenHundley/received_events","type":"User","site_admin":false},"created_at":"2018-07-16T23:21:50Z","updated_at":"2018-07-16T23:21:50Z","author_association":"NONE","body":"@normj Great! I look forward to your input, and I'm very excited to hear about 2.1 support. We are already looking to utilize it on some new projects ;)"}}
{"actor":{"display_login":"KenHundley"}}