<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Breadcentric</title>
    <description>The latest articles on DEV Community by Breadcentric (@breadcentric).</description>
    <link>https://dev.to/breadcentric</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F535186%2Fcb30d22b-aa9e-479c-a304-62f6873a3e33.jpg</url>
      <title>DEV Community: Breadcentric</title>
      <link>https://dev.to/breadcentric</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/breadcentric"/>
    <language>en</language>
    <item>
      <title>How to add a service to AWS CLI and boto3</title>
      <dc:creator>Breadcentric</dc:creator>
      <pubDate>Fri, 01 Jan 2021 21:41:38 +0000</pubDate>
      <link>https://dev.to/breadcentric/how-to-add-a-service-to-aws-cli-and-boto3-2mhb</link>
      <guid>https://dev.to/breadcentric/how-to-add-a-service-to-aws-cli-and-boto3-2mhb</guid>
      <description>&lt;p&gt;In this post I will share how to add an AWS service to AWS CLI utility and for use with boto3.&lt;/p&gt;

&lt;p&gt;One of the missing features AWS DeepRacer Community have been regularly raising has been lack of CLI access to AWS DeepRacer Console. Thanks to Don Barber I have finally understood how AWS CLI and Boto3 library work and would like to share it with you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FBuTxtP0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FBuTxtP0.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Icon image used shared under Creative Commons &lt;a href="https://www.iconfinder.com/icons/285695/terminal_icon" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  What is AWS CLI
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/cli/" rel="noopener noreferrer"&gt;AWS Command Line Interface&lt;/a&gt; is a utility that you can use to interact with AWS services through a terminal. It supports many of the services that Amazon Web Services Provide:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;accessanalyzer                           | acm                                     
acm-pca                                  | alexaforbusiness                        
amp                                      | amplify                                 
amplifybackend                           | apigateway                              
apigatewaymanagementapi                  | apigatewayv2                            
appconfig                                | appflow                                 
appintegrations                          | application-autoscaling                 
application-insights                     | appmesh                                 
appstream                                | appsync                                 
athena                                   | auditmanager                            
autoscaling                              | autoscaling-plans                       
backup                                   | batch                                   
braket                                   | budgets                                 
ce                                       | chime                                   
cloud9                                   | clouddirectory                          
cloudformation                           | cloudfront                              
cloudhsm                                 | cloudhsmv2                              
cloudsearch                              | cloudsearchdomain                       
cloudtrail                               | cloudwatch                              
codeartifact                             | codebuild                               
codecommit                               | codeguru-reviewer                       
codeguruprofiler                         | codepipeline                            
codestar                                 | codestar-connections                    
codestar-notifications                   | cognito-identity                        
cognito-idp                              | cognito-sync                            
comprehend                               | comprehendmedical                       
compute-optimizer                        | connect                                 
connect-contact-lens                     | connectparticipant                      
cur                                      | customer-profiles                       
databrew                                 | dataexchange                            
datapipeline                             | datasync                                
dax                                      | deepracer                               
detective                                | devicefarm                              
devops-guru                              | directconnect                           
discovery                                | dlm                                     
dms                                      | docdb                                   
ds                                       | dynamodb                                
dynamodbstreams                          | ebs                                     
ec2                                      | ec2-instance-connect                    
ecr                                      | ecr-public                              
ecs                                      | efs                                     
eks                                      | elastic-inference                       
elasticache                              | elasticbeanstalk                        
elastictranscoder                        | elb                                     
elbv2                                    | emr                                     
emr-containers                           | es                                      
events                                   | firehose                                
fms                                      | forecast                                
forecastquery                            | frauddetector                           
fsx                                      | gamelift                                
glacier                                  | globalaccelerator                       
glue                                     | greengrass                              
greengrassv2                             | groundstation                           
guardduty                                | health                                  
healthlake                               | honeycode                               
iam                                      | identitystore                           
imagebuilder                             | importexport                            
inspector                                | iot                                     
iot-data                                 | iot-jobs-data                           
iot1click-devices                        | iot1click-projects                      
iotanalytics                             | iotdeviceadvisor                        
iotevents                                | iotevents-data                          
iotfleethub                              | iotsecuretunneling                      
iotsitewise                              | iotthingsgraph                          
iotwireless                              | ivs                                     
kafka                                    | kendra                                  
kinesis                                  | kinesis-video-archived-media            
kinesis-video-media                      | kinesis-video-signaling                 
kinesisanalytics                         | kinesisanalyticsv2                      
kinesisvideo                             | kms                                     
lakeformation                            | lambda                                  
lex-models                               | lex-runtime                             
license-manager                          | lightsail                               
location                                 | logs                                    
lookoutvision                            | machinelearning                         
macie                                    | macie2                                  
managedblockchain                        | marketplace-catalog                     
marketplace-entitlement                  | marketplacecommerceanalytics            
mediaconnect                             | mediaconvert                            
medialive                                | mediapackage                            
mediapackage-vod                         | mediastore                              
mediastore-data                          | mediatailor                             
meteringmarketplace                      | mgh                                     
migrationhub-config                      | mobile                                  
mq                                       | mturk                                   
mwaa                                     | neptune                                 
network-firewall                         | networkmanager                          
opsworks                                 | opsworkscm                              
organizations                            | outposts                                
personalize                              | personalize-events                      
personalize-runtime                      | pi                                      
pinpoint                                 | pinpoint-email                          
pinpoint-sms-voice                       | polly                                   
pricing                                  | qldb                                    
qldb-session                             | quicksight                              
ram                                      | rds                                     
rds-data                                 | redshift                                
redshift-data                            | rekognition                             
resource-groups                          | resourcegroupstaggingapi                
robomaker                                | route53                                 
route53domains                           | route53resolver                         
s3control                                | s3outposts                              
sagemaker                                | sagemaker-a2i-runtime                   
sagemaker-edge                           | sagemaker-featurestore-runtime          
sagemaker-runtime                        | savingsplans                            
schemas                                  | sdb                                     
secretsmanager                           | securityhub                             
serverlessrepo                           | service-quotas                          
servicecatalog                           | servicecatalog-appregistry              
servicediscovery                         | ses                                     
sesv2                                    | shield                                  
signer                                   | sms                                     
sms-voice                                | snowball                                
sns                                      | sqs                                     
ssm                                      | sso                                     
sso-admin                                | sso-oidc                                
stepfunctions                            | storagegateway                          
sts                                      | support                                 
swf                                      | synthetics                              
textract                                 | timestream-query                        
timestream-write                         | transcribe                              
transfer                                 | translate                               
waf                                      | waf-regional                            
wafv2                                    | wellarchitected                         
workdocs                                 | worklink                                
workmail                                 | workmailmessageflow                     
workspaces                               | xray                                    
s3api                                    | s3                                      
configure                                | deploy                                  
configservice                            | opsworks-cm                             
runtime.sagemaker                        | history
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The tool uses Amazon's boto3 library which allows for a programatic access to those services in Python. Boto3 in turn uses botocore as a dependency that contains definitions of the services.&lt;/p&gt;

&lt;h1&gt;
  
  
  How are service endpoints defined in AWS CLI?
&lt;/h1&gt;

&lt;p&gt;Each service has at least a Service Definition File which is written in JSON and contains a few pieces of information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;version - version of the service definition file&lt;/li&gt;
&lt;li&gt;metadata - additional information about interacting with the service&lt;/li&gt;
&lt;li&gt;operations - what requests can be sent to the service&lt;/li&gt;
&lt;li&gt;shapes - operations inputs and outputs&lt;/li&gt;
&lt;li&gt;documentation - pieces of data that are used to form documentation in &lt;code&gt;aws &amp;lt;command&amp;gt; help&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not the only file available and you can read about more of them in &lt;a href="https://github.com/boto/botocore/blob/develop/botocore/loaders.py" rel="noopener noreferrer"&gt;loaders.py docstring&lt;/a&gt;. They are not needed in my case.&lt;/p&gt;

&lt;p&gt;The SDF file needs to be present in one of the following locations top be used by AWS CLI or boto3:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;botocore root&amp;gt;/data/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.aws/models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A path added to a list in the &lt;code&gt;AWS_DATA_PATH&lt;/code&gt; env var&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're using boto3, you can also use code to add your location to the default loader.&lt;/p&gt;

&lt;h1&gt;
  
  
  Can I create my own service definition?
&lt;/h1&gt;

&lt;p&gt;I think not. I was actually planning to do that myself but then I have realised that you need to know the exact service API endpoint and version to be able to work with it. Once you do you can observe what your service console page is calling on the api gateway and do the same yourself.&lt;/p&gt;

&lt;p&gt;But I guess that's not the use case AWS are after. When the service authors decide their API is ready they can expose it together with the version, they can provide the service definition files for people with access to preview and they can then use the API. If you're in contact with the dev team you can try some pretty-please approach and maybe they will share it with you.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS DeepRacer CLI
&lt;/h1&gt;

&lt;p&gt;If you haven't yet seen Don's reInvent 2020 talk &lt;a href="https://virtual.awsevents.com/media/1_dr6mwb4j" rel="noopener noreferrer"&gt;"Shift your ML model into overdrive with AWS DeepRacer analysis tools"&lt;/a&gt; I recommend that you do. As part of preparation for the talk Don has prepared some updates to log analysis tool provided by AWS. The tool has been there from day one together with &lt;a href="https://github.com/aws-samples/aws-deepracer-workshops" rel="noopener noreferrer"&gt;DeepRacer workshops&lt;/a&gt;. I've looked at this new line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;region = "us-east-1"
dr_client = boto3.client('deepracer', region_name=region,
        endpoint_url="https://deepracer-prod.{}.amazonaws.com".format(region))
models = dr_client.list_models(ModelType="REINFORCEMENT_LEARNING",MaxResults=100)["Models"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And thought: "cool, we can now use aws cli!". Lesson learned: don't skip half of the code provided when trying to get something to work. Right above this code Done does this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;envroot = os.getcwd()
aws_data_path = set(os.environ.get('AWS_DATA_PATH', '').split(os.pathsep))
aws_data_path.add(os.path.join(envroot, 'models'))
os.environ.update({'AWS_DATA_PATH': os.pathsep.join(aws_data_path)})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And there it was: &lt;a href="https://github.com/aws-samples/aws-deepracer-workshops/blob/master/log-analysis/models/deepracer/2019-04-01/service-2.json" rel="noopener noreferrer"&gt;The service definition file for DeepRacer&lt;/a&gt;. &lt;br&gt;
I am pleased to say that I have added the service definition file to &lt;a href="https://pypi.org/project/deepracer-utils/" rel="noopener noreferrer"&gt;deepracer-utils 0.8&lt;/a&gt;. If you would like to use it with  boto3, simply run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from deepracer.boto3_enhancer import add_deepracer

client = deepracer_client()

dir(client)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'm leaving it out there since you can already start playing with it, but expect updates to install it for use in AWS CLI and for some handy use cases, examples and perhaps even docs :)&lt;/p&gt;

</description>
      <category>aws</category>
      <category>deepracer</category>
      <category>machinelearning</category>
      <category>awscli</category>
    </item>
    <item>
      <title>Teach me, Amazon CodeGuru</title>
      <dc:creator>Breadcentric</dc:creator>
      <pubDate>Mon, 07 Dec 2020 10:24:55 +0000</pubDate>
      <link>https://dev.to/breadcentric/teach-me-amazon-codeguru-3dp3</link>
      <guid>https://dev.to/breadcentric/teach-me-amazon-codeguru-3dp3</guid>
      <description>&lt;p&gt;Today I will run a machine-learning-backed code analysis against the Python-based &lt;a href="https://pypi.org/project/deepracer-utils/"&gt;deepracer-utils&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;As the AWS re:Invent continues, many new products have been announced. I was especially impressed with &lt;a href="https://virtual.awsevents.com/media/1_2dqukpps"&gt;Andy Jassy's Keynote&lt;/a&gt; on Tuesday Jan 1st, it was pretty fast pace and packed with announcements. Blink once, you'll miss two new products. Interestingly machine learning was largely omitted since there is a separate &lt;a href="https://virtual.awsevents.com/media/t/1_07cg4srl/186983933"&gt;Machine Learning Keynote with Swami Sivasubramanian on Dec 8th at 2:45 pm UTC&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I'm especially curious about the devices announcements. DeepRacer is still holding up pretty damn well with this year's final in progress (virtually), multiple companies using it for mass machine learning and cloud immersion (DBS - 3K+ employees, Accenture - 2K+, DNP - 1K+, and there's more that I cannot mention :) ) and while last years AWS DeepComposer did not make many jaws drop it still was pretty fun for learning. I'm wondering if there will be any additions to this group. &lt;/p&gt;

&lt;h1&gt;
  
  
  AWS CodeGuru Reviewer
&lt;/h1&gt;

&lt;p&gt;CodeGuru Reviewer is a code analysis utility provided by AWS. It initially provided analysis for Java, this year Python was added. I haven't used it before, mainly because all of my Java code is work code and I haven't had much to run it against. This year however I have published deepracer-utils to support various methods of training that little rascal.&lt;/p&gt;

&lt;p&gt;I will attach it to a GitHub repository and see what analysis results I get.&lt;/p&gt;

&lt;h1&gt;
  
  
  Deepracer-utils
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/aws-deepracer-community/deepracer-utils/"&gt;Deepracer-utils&lt;/a&gt; is a Python based project, a first one in which I published on PyPi and prepared with my most complete (at that time) understanding of what a Python project should look like.&lt;/p&gt;

&lt;h1&gt;
  
  
  My expectations
&lt;/h1&gt;

&lt;p&gt;I am expecting to get some proper hints about what I have flipped up, hopefully no critical level issues. I have 10 years professional experience but since Java ways don't always translate well into Python, I'm hoping to learn a thing or two today.&lt;/p&gt;

&lt;h1&gt;
  
  
  Getting started
&lt;/h1&gt;

&lt;p&gt;The main project page has a quick access to a setup page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZpH4qMVh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/JzzcJR6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZpH4qMVh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/JzzcJR6.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you need to grant access to your repositories. The tool is asking for an admin access to webhooks (to integrate to selected projects) and gives you the option to do it for selected organisations (you need to click the "Grant" button next to the org for permission to be granted). Another permission is read access to both public and private repositories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UAGg7BHF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/qJOBFor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UAGg7BHF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/qJOBFor.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzTwp0QZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/GgyFQH0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzTwp0QZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/GgyFQH0.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you would like to revoke the authorization, you will find it in your &lt;a href="https://github.com/settings/applications"&gt;Applications setting page&lt;/a&gt; on the Authorized OAuth Apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--__1nNETx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Yuxaj9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--__1nNETx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Yuxaj9l.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have granted the permissions, but aws-deepracer-community projects where nowhere to be found - I decided to revoke the authorization and redo it since I could not edit the nature of an already granted authorization (guess it makes sense). That did work. I selected the right repo and presto:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IgKKAKMQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/GkFDO8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IgKKAKMQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/GkFDO8c.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the repository itself I can see a new webhook created, listening for Pull requests, Pull requests reviews and Pull request review comments.&lt;/p&gt;

&lt;p&gt;The associated repositories section doesn't give you many options: you can associate repository, disassociate repository or manage repository's tags. I go over to Code review page and there are two tabs, one for pull requests (empty since I made no PRs today) and Repository analysis. There I can request a full repository analysis:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mS54AIwR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Q2b6YsH.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mS54AIwR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/Q2b6YsH.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I requested repository analysis and was asked whether I wanted code recommendations or code and security. I can see that Code and security involves creating an S3 bucket for the analysis and code and build artifacts are stored there. I did some googling around and it looks like that part is still Java only (but don't quote me on that), so let's just run the code recommendations:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N_ShDd5m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/0xQkvoD.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N_ShDd5m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/0xQkvoD.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
Suggested name is consistent with my lack of talent for consistent naming so I will leave it as it is.&lt;/p&gt;

&lt;h1&gt;
  
  
  Results
&lt;/h1&gt;

&lt;p&gt;My analysis run returned three issues around resource closing:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7sLv-uVz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/sBhJMMM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7sLv-uVz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/sBhJMMM.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
The header is a link to the line in GitHub repository, the description of an issue is pretty detailed and links lead to Python docs. &lt;/p&gt;

&lt;p&gt;The resources that analysis tool points at are not production code and come from a utility called Versioneer which lets you treat git tags as a project versioning utility, just like Gradle's &lt;a href="https://github.com/allegro/axion-release-plugin"&gt;Axion release plugin&lt;/a&gt; which I'm using or universal &lt;a href="https://github.com/jgitver"&gt;jgitver&lt;/a&gt;. I prefer this solution to editing text files with numbers. As it appears, the code that I was supposed to add to the project for Versioneer to work has some flaws in it.&lt;/p&gt;

&lt;p&gt;I've decided to make appropriate corrections: &lt;a href="https://github.com/aws-deepracer-community/deepracer-utils/pull/7"&gt;https://github.com/aws-deepracer-community/deepracer-utils/pull/7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The issues have been reviewed and so I have accepted the pull request. No production changes so no release.&lt;/p&gt;

&lt;h1&gt;
  
  
  Telemetrics
&lt;/h1&gt;

&lt;p&gt;A nice feature that come out of the box is access to telemetrics in CloudWatch: &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a-vN1X5P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/KSle6yi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a-vN1X5P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/KSle6yi.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
(The blue dot is showing a number of recommendations found in the repository analysis, and the orange line at zero is showing the amount of issues found in pull requests).&lt;/p&gt;

&lt;p&gt;Feedback is one of the substantial elements of a reliable DevOps infrastructure and that applies not only to business, application or system monitoring, but also to developers and quality of their deliverables.&lt;/p&gt;

&lt;h1&gt;
  
  
  Profiler
&lt;/h1&gt;

&lt;p&gt;A second new feature that I have not looked into is CodeGuru Profiler - it allows you to perform profiling on your Python lambda function or application deployed on EC2. You can have a look at it in the &lt;a href="https://aws.amazon.com/blogs/devops/raising-code-quality-for-python-applications-using-amazon-codeguru/"&gt;AWS CodeGuru Python support announcement article&lt;/a&gt;. &lt;/p&gt;

&lt;h1&gt;
  
  
  Resources
&lt;/h1&gt;

&lt;p&gt;Apart from the &lt;a href="https://aws.amazon.com/blogs/devops/raising-code-quality-for-python-applications-using-amazon-codeguru/"&gt;AWS CodeGuru Python support announcement article&lt;/a&gt; I recommend that you have a look at &lt;a href="https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html"&gt;AWS CodeGuru Reviewer documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As usual, I recommend checking out the &lt;a href="https://aws.amazon.com/codeguru/pricing/"&gt;pricing page for CodeGuru&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;I'd say the tool looks promising and integrates quite easily into your code. It would be awesome if the tool went a step further and enforced no new issues in pull requests and allowed provision of feedback in the pull request or maybe even the build flow in CodeBuild. One step at a time, I guess.&lt;/p&gt;

&lt;p&gt;As any other first-class citizen in the AWS offering (except for DeepRacer, ekhm) AWS CodeGuru offers integration which allows you (among other things) to fetch the recommendations for code reviews so I guess a feedback integration could be scripted. That might be some Fix it Friday project.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>python</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
