AWS step functions - Any way to create the state machine graphically? - amazon-web-services

When creating a state machine with step functions, we use Amazon States Language (ASL). A visual workflow is rendered showing the state machine.
Is there anyway to create the state machine visually to begin with? Creating the states with something like drag and drop and then updating the details for, let's say the specific Lambda that needs to be invoked?
I see that AWS does not provide this feature, and I couldn't find a third party that does, wondering if there's something I didn't find.

Bachman,
I found this 3rd party draw.io plugin to create and export ASL: https://github.com/sakazuki/step-functions-draw.io. I have not used it myself, so I cannot speak to the quality/correctness of it. It looks like a pretty nice tool though!
Update - Here is a youtube video of it in action: https://www.youtube.com/watch?v=NrMcFdTdhhU
Hope this helps!

FYI
Workflow Studio is a new visual workflow designer for AWS Step Functions that makes it faster and easier to build workflows using a drag and drop interface in the AWS console.
https://aws.amazon.com/about-aws/whats-new/2021/announcing-workflow-studio-a-new-low-code-visual-workflow-designer-foraws-step-functions/.

Related

How to use AWS CLI to create a stack from scratch?

The problem
I'm approaching AWS, and the first test project will be a website, but i'm struggling on how to approach the resource and the tools to accomplish this.
AWS documentation is not really beginner-friendly, so to me it is like to being punched in the face at the first boxe training session.
First attempt
I've installed bot AWS and SAM cli tools, so what I would expect is to be able to create an empty stack at first and adding the resource one by one as the specifications are given/outlined, but instead what I see is that i need to give a template to the tool to create the new stack, but that means I need to know how to write it beforehand and therefore the template specifications for each resource type.
Second attempt
This lead me to create the stack and the related resources from the online console to get the final stack template, but then I need to test every new resource or any updated resource locally, so I have to copy the template from the online console to my machine and run the cli tools with this, but obviously it is not the desired development flow.
What I expected
Coming from a standard/classical web development I would expect to be able to create the project locally, test the related resources locally, version it, and delegate the deployment to the pipeline.
So what?
All this made me understand that "probably" I'm missing somenthing on how to use the aws cli tools and how the development for an aws-hosted application is meant to be done.
I'm not seeking for a guide on specific resource types like every single tutorial I've found online, but something on a higher level on how to handle a project development on aws, best practices and stuffs like that, I can then dig deeper on any resource later when needed.
AWS's Cloud Development Kit ticks the boxes on your specific criteria.
Caveat: the CDK has a learning curve in line with its power and flexibility. There are much easier ways to deploy a web app on AWS, like the higher-level AWS Amplify framework, with abstractions tailored to front-end devs who want to minimise the mental energy spent on the underlying infrastructure.
Each of the squillion AWS and 3rd Party deploy tools is great for somebody. Nevertheless, looking at your explicit requirements in "What I expected", we can get close to the CDK as an objective answer:
Coming from a standard/classical web development
So you know JS/Python. With the CDK, you code infrastructure as functions and classes, rather than 500 lines of YAML as with SAM. The CDK's reference implementation is in Typescript. JS/Python are also supported. There are step-by-step AWS online workshops for these and the other supported languages.
create the project locally
Most of your work will be done locally in your language of choice, with a cdk deploy CLI command to
bundle the deployment artefacts and send them up to the cloud.
test the related resources locally
The CDK has built-in testing and assertion support.
version it
"Deterministic deploy" is a CDK design goal. Commit your code and the generated deployment artefacts so you have change control over your infrastructure.
delegate the deployment to the pipeline
The CDK has good pipeline support: i.e. a push to the remote main branch can kick off a deploy.
AWS SAM is actually a good option if you are just trying to get your feet wet with AWS. SAM is an open-source wrapper around the aws-cli, which allows you to create aws resources like Lambda in say ~10 lines of code vs ~100 lines if you were to use the aws-cli directly. Yes, you'll need to learn SAM specific things like SAMtemplate and SAM-cli but it is pretty straightforward using this doc.
Once you get the hang of it, it would be easier to start looking under the hood of what/how SAM is doing things and get into the weeds with aws-cli if you wanted. Which will then allow you to build out custom solutions (using aws-cli) for your complex use cases that SAM may not support. Caveat: SAM is still pretty new and has open issues that could be a blocker for advanced features/complex use cases.

Resource window of Google BigQuery

I am new to Google BigQuery.
I am now logged into bq console, but the resource window for tables and datasets is too small to navigate and is pinned into bottom left, and its not resizable, please help on how can i unpin the window to navigate it.
It looks like this.
Looks like what you want is something like below
There are many way to accomplish this. I will present two of them
Customize existing/available UI to fit your own specific needs using so called Bookmarklet
Bookmarklets are saved and used as normal bookmarks. As such, they are simple "one-click" tools which add functionality to the browser.
There is a wide usage of bookmarklets - one of which is to modify the appearance of a web page within the browser - which is exactly your use case.
You can create bookmarklet that will switch visibility of elements above the data navigator as in above example
if your needs are more sophisticated and you are looking for more perks than just hiding elements of UI - you can look into third party IDE for BigQuery
I can recommend one to check out - Goliath - the part of Potens.io Suite for BigQuery. You will find there everything you would expected from professional big data IDE tool.
It is free to use and is available on GCP Marketplace
Disclosure - I am part and lead of Potens.io Team (which is also clearly stated in my SO Profile)
Did you mean you want to unpin a project that has "Pin icon" in the screenshot?
If yes, You can unpin a project to clcik "UNPIN PROJECT" right side of bigquery console.
You have to click project(e.g bigquery-public-data) first to meet "UNPIN PROJECT".

Setting build priority in yaml or UI

Is there a way to setup up a build's priority in a yaml based pipeline? There seem to be references to build priority in the Azure DevOps API, but nothing in how to do this via yaml. I thought there might be some docs in the Triggers section, but no.
We need this because we have some fast building NuGet packages, but these get starved via slow-build pipelines making turnaround time for packages painful.
The closest thing I could come up with to working around this is via agent demands in the yaml
demands:
- Agent.ComputerName = XYZ
to separate build pipelines, but this is a bit of a hack and doesn't use agents efficiently.
A way to set this in UI would be acceptable, but I couldn't seem to find anything.
Recently Azure DevOps introduced the ability to manually specify a build/release runs next.
This manifests as a Run next button. (image source).
So while you can't say "this pipeline always takes priority" yet, you can manually force a specific run to the front of the queue.
If you need a specific pipeline to always take priority, then you likely want to setup a separate agent pool just for those pipelines, or use demands as Leo Liu mentioned.
Setting build priority in yaml or UI
I'm afraid this feature is not yet supported in Azure DevOps at this moment.
There is a popular user voice about it, you can upvote it and check the feedback from that ticket.
Currently as a workaround, just like what you did, set the demands in build definitions to force building with the specific agents.
Hope this helps.

Is there a way to test AppSync code locally and/or in CI/CD?

I am looking to dive into a project using AppSync. So far I have been able to find plenty of articles and such online giving all the steps as to what buttons to click in order to get a sample project running, but none of them seem to touch on how one deals with it from a local development or in a CI/CD environment. Its probably my "old school" idea of how dev usually works, but I was expecting some way to simulate enough of the environment locally to do development and run unit tests, but I can't seem to find any way to do just that. And when I get to the UI portion I have no idea how to have a local dev instance of the backend to run against.
Do people not develop in this way anymore, opting to instead stand up a "development stack"? I just want to make sure I am not painting myself into a corner in the future.
Short answer is no. Here are your options:
AppSync Emulator for Serverless Framework. It's a nice emulator, but still limited and differs quite a bit from the the real API in my opinion.
We ended up writing separated unit tests for VTL templates and compare result query to an appropriate fixture. You could deploy full featured VTL Parser on Java but there are simpler solutions: a Python library AirSpeed; for JS you could use one from the AppSync Emulator.
Here is a way to test your Appsync resolvers directly on AWS console.
In the AppSync console, in the Schema tab, select a resolver and you will land into an "Edit resolver" page.
Select the button "Select Test Context" to simulate a context received by your resolver.
Then select "Run test".

Create a SharePoint workflow programmatically

I am working on a copy of a SharePoint 2007 site for a client.
I would like to be able to automate as much of the update process as I can with minimal disruption to the client's system when the updates are ready for production.
To that effect, I was wondering if anyone knows how to automate creating a SharePoint workflow (created using SPD 2007) in another SharePoint server/site.
Perhaps I haven't searched enough yet, but I have not discovered if there is a way to do this with web services, which I believe would be my preference.
I do not believe I have the ability to use STSadm on this, as the hosting for the SharePoint site is separate.
I think I can export the workflows in a personal web package and I'll admit, I haven't experimented with this yet on workflows, but my current experience with other exports, such as lists, is that guids seem to get messed up between sites. Even if this is not an issue, I'm not sure if there is a way of automating the import process (without STSadm).
I'm hoping not to have to work through a long list of manual procedures (that could accidentally get missed) when implementing these changes on the target production site.
My preference is to be able to create some sort of update batch or application that will make the changes quickly and that I can test before implementing on the production system.
This entails quite a few things, but for now, I'd like to focus on getting workflows into the target system.
Any suggestions on where to get started would be welcome.
SharePoint Designer workflows are not portable between sites. (Reference) 1
For your situation, I would recommend taking the Visual Studio workflow route. Take a look at this tutorial: How to Create Custom SharePoint Workflows in Visual Studio 2008. The key for you is how you will associate it to lists.
The other option is to create a custom Workflow Activity (2007 has less options that 2010). You will still have to create the workflow using SharePoint Designer and add your custom activity to it in each site.
1. Yes, there is the "hack way" of trying to do it by copying the XML and changing the GUIDs... but it is error prone and difficult.
SharePoint 2010 gives more flexibility for workflows and thus the first #Kit Menke statement isn't true for readers using SP2010 (i see that this is tagged as sharepoint2007, but i'm making it clear for readers using SP2010)
However, if you publish a workflow template to a SharePoint site
collection, you can download that template as a WSP file and then
deploy it to other site collections.
Read more about Workflow deployment process (SharePoint Foundation 2010)