Git Product home page Git Product logo

aws / aws-toolkit-jetbrains Goto Github PK

View Code? Open in Web Editor NEW
733.0 59.0 201.0 32.39 MB

AWS Toolkit for JetBrains - a plugin for interacting with AWS from JetBrains IDEs

Home Page: https://plugins.jetbrains.com/plugin/11349-aws-toolkit

License: Apache License 2.0

Kotlin 95.39% Java 0.63% C# 1.29% Dockerfile 0.03% Batchfile 0.01% Shell 0.04% JavaScript 0.17% TypeScript 1.68% SCSS 0.03% CSS 0.02% HTML 0.08% Python 0.03% Vue 0.61%
aws-lambda sam jetbrains aws jetbrains-ides

aws-toolkit-jetbrains's Introduction

Build Status Coverage Downloads Version Quality Gate Status

AWS Toolkit for JetBrains

AWS Toolkit for JetBrains is a plugin for JetBrains IDEs that make it easier to write applications built on Amazon Web Services

The AWS Toolkit for JetBrains is open source because we want you to be involved. We appreciate issues, feature requests, pull requests, code reviews or any other contributions.

Feedback

We want your feedback!

Supported IDEs

All JetBrains IDEs 2023.2+

Installation

See Installing the AWS Toolkit for JetBrains in the AWS Toolkit for JetBrains User Guide.

To use this AWS Toolkit, you will first need an AWS account, a user within that account, and an access key for that user. To use the AWS Toolkit to do AWS serverless application development and to run/debug AWS Lambda functions locally, you will also need to install the AWS CLI, Docker, and the AWS SAM CLI. The installation guide covers setting up all of these prerequisites.

EAP Builds

We also offer opt-in Early Access Preview builds that are built automatically.

In order to opt-in:

  • Add the URL https://plugins.jetbrains.com/plugins/eap/aws.toolkit to your IDE's plugin repository preferences by going to Plugins->Gear Icon->Manage Plugin Repositories and adding the URL to the list
  • Check for updates.

Installing From Source

Please see CONTRIBUTING for instructions.

Features

General

  • AWS Resource Explorer - tree-view of AWS resources available in your selected account/region. This does not represent all resources available in your account, only a sub-set of those resource types supported by the plugin. Learn More
  • Authentication - Connect to AWS using static credentials, credential process, AWS Builder ID or AWS SSO. Learn more about authentication options

Services

CloudFormation AWS CloudFormation

  • View events, resources, and outputs for your CloudFormation stacks

CloudWatch Logs CloudWatch Logs

  • View and search your CloudWatch log streams

AWS Lambda AWS Lambda

Many of these features require the AWS SAM CLI to be installed, see the Serverless Application Model (SAM) website for more information on installation of the SAM CLI.

SAM features support Java, Python, Node.js, and .NET Core

  • Run/Debug Local Lambda Functions - Locally test and step-through debug functions in a Lambda-like execution environment provided by the SAM CLI. Learn More
  • Invoke Remote Lambda Functions - Invoke remote functions using a sharable run-configuration Learn More
  • Package & Deploy Lambda Functions - Ability to package a Lambda function zip and create a remote lambda Learn More
  • Sync SAM-based Applications - Sync & track SAM-based applications Learn More

Note: Python features are available in both PyCharm and IntelliJ with the Python Plugin installed.

Amazon Redshift Amazon RDS/Redshift

  • Connect to RDS/Redshift databases using temporary credentials with IAM/SecretsManager, no copy paste required

Note: database features require using a paid JetBrains product

Amazon S3 Amazon S3

  • View and manage your S3 buckets
  • Upload/Download to from buckets
  • Learn more

Experimental Features

Sometimes we'll introduce experimental features that we're trying out. These may have bugs, usability problems or may not be fully functional, and because these aren't ready for prime-time we'll hide them behind an experimental feature flag.

Experimental features can be enabled in the settings/preferences (Settings -> Tools -> AWS -> Experimental Features) or via the Addtional Settings (Gear Icon) in the AWS Explorer Tool Window.

Please note that experimental features may be disabled / removed at any time.

Licensing

The plugin is distributed according to the terms outlined in our LICENSE.

aws-toolkit-jetbrains's People

Contributors

abrooksv avatar andrewyuq avatar arangatang avatar ashishrp-aws avatar aws-toolkit-automation avatar awschristou avatar breedloj avatar ctlai95 avatar dependabot[bot] avatar dhasani23 avatar dogusata avatar hunterwerlla avatar justinmk3 avatar kiiadi avatar kumsmrit avatar laileni-aws avatar leigaol avatar manodnyab avatar mk-fan avatar ranyoo2367 avatar rli avatar sannicm avatar sarayev avatar sdubov avatar tincheng avatar vchikoti1998 avatar will-shaohua avatar wularr avatar zhangzhx avatar zixlin7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aws-toolkit-jetbrains's Issues

Investigate initial install/update experience

After installation from the marketplace we want to invite the user to explore the capabilities of the toolkit and potentially include a gesture to set up initial credentials etc. Some extensions use a subtle pop-up window in the lower right to welcome the user, or invite the user to view details of an update.

This issue is to define what we want to do and will spawn additional refinement issues for the implementation.

Change-log generation

Java SDK v2 includes a semi-automated change-log generation. This was borrowed from the Python SDK team. Change-log entries are included along with a commit in the form of .json files generated by a script included with the repository. In our case we could use a gradle task.

These json files are put into a directory called .changes/next-release, when the next release is run they are collected up, formatted and the CHANGELOG.md file is generated. Java team uses a Python script for this, but for our purposes this could be written easily again in groovy and included as a gradle build-task - no external dependencies needed.

In our case we'd also want that changelog to be put into the plugin.xml and this can be done via the gradle plugins' patchXml task.

Only wrinkle is that github's CHANGELOG.md needs to be in Git-Flavoured Markdown (GFM) and JetBrains plugins expect their change-log's to be HTML. We need to find a way to convert from one to the other.

Invoke Lambda UI improvements

  1. Make the details text boxes consistently sized for all lambdas
  2. Add a box around the time so it looks the same
  3. Add account indicator (credential profile display name? Account ID?)
  4. Add region
  5. Add runtime?

ECS new project wizard

Walk through a sample Java project that packages a docker image and can be deployed to an ECS cluster.

Basic Lambda new project wizard

A new project wizard that sets up a Java-based project to be deployed to AWS Lambda using SAM Templates and a CFN deployment

Refactor profile extensions to support extendability

  • We need to have extensions for other profile credentials like Env Var credentials, ECS credentials
  • Refactor the profile credentials extensions a bit for allowing each extension to define their own init logics.

Format the build.gradle dependencies

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "com.amazonaws:aws-java-sdk-s3:$awsSdkVersion"
compile "com.amazonaws:aws-java-sdk-lambda:$awsSdkVersion"
compile "com.amazonaws:aws-java-sdk-iam:$awsSdkVersion"
compile "com.amazonaws:aws-java-sdk-codecommit:$awsSdkVersion"
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.8.0'

Remote resources manager

A service that allows fetching (and caching) of remote resources. This service should handle exceptions gracefully and fallback to either previously-cached versions if possible and then finally pre-shipped resources when no cache and no remote version is available.

Examples for usage:

Go from Lambda handler to code location

Given a handler, try to find the PSI reference for it so we can navigate to it

Integrate a Jump To Source action based on it, and add to Lambda editor UI
Stretch goal: Add to explorer as well

Remove usage of SDK v1 to load endpoints.json

The partition loader used in AwsRegionProvider.kt is the only usage of Java SDK V1. The API in V2 is marked as internal.

Do one of the following:

  1. Ask Java SDK if that can be marked as public
  2. Write our own loader. May need to go this route if we want to enhance the endpoints.json with flag and geographic region metadata

Debug Lambda locally

Enable local debugging of Java Lambda through an invocation wrapper that simulates (with low fidelity) invocations through Lambda.

Create/update standard documents

Before open-sourcing we should create/update the following documents:

  • Update README.md
  • Create CONTRIBUTING, CODE_OF_CONDUCT
  • Settle of licenses
  • Include license text as a comment header in all source-files
  • Add linting rule to ensure header is always present in source-files.

Create IAM role should take a policy document

Today the create Lambda dialog's Create role makes a role that can't be used with that lambda due to an empty document is attached.

We should replace the current modal with a custom Dialog form that contains a role name box, and a JSON editor that is pre-filled with a valid minimal template for such use. (i.e. lambda creator gives a doc that uses the service principal and cloudwatch logs support)

Replace Logger usage

Reference the Kotlin for Plugin Developer page for replacing code like this.

  • Add extension functions for various log levels & associated tests
  • Update usages of 'deprecated use'
  • Add ktlint rule that forbids use of 'bare' log calls like LOG.debug("message") instead favouring the above extension function: LOG.debug{ "message" }

Update the Create Lambda's Create Role with a working role

Depends on #139

Consoles templates:
Trust doc:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Policy doc:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        }
    ]
}

[5] Release readiness

  • automated release pipelines
  • operational readiness review
  • jetbrains plugin repo account
  • UX review

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.