<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Alejandro Cotroneo</title><link>https://www.pulumi.com/blog/author/alejandro-cotroneo/</link><description>Pulumi blog posts: Alejandro Cotroneo.</description><language>en-us</language><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><item><title>Migrate CloudFormation to Pulumi with Discovered Stacks</title><link>https://www.pulumi.com/blog/discovered-stacks-migrate-cloudformation-to-pulumi/</link><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/discovered-stacks-migrate-cloudformation-to-pulumi/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/discovered-stacks-migrate-cloudformation-to-pulumi/index.png" /&gt;
&lt;p&gt;With &lt;a href="https://www.pulumi.com/docs/insights/discovery/discovered-stacks/"&gt;Discovered Stacks&lt;/a&gt;, Pulumi Cloud does the bookkeeping for a CloudFormation migration: every resource in the stack gets an explicit migration status, and the migration is done when the code provably matches the cloud. In this tutorial, we take one real CloudFormation stack from discovered to migrated and managed by Pulumi IaC, end to end.&lt;/p&gt;
&lt;h2 id="what-were-migrating"&gt;What we&amp;rsquo;re migrating&lt;/h2&gt;
&lt;p&gt;Our example is &lt;code&gt;payments-api&lt;/code&gt;, a CloudFormation stack with 61 resources: a VPC, an Aurora ledger database behind an RDS Proxy, an assets S3 bucket, a DynamoDB ledger table, a Kinesis payment-events pipeline, and the IAM roles, KMS keys, and secrets that wire them together. The plan has five steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find the stack in Pulumi Cloud.&lt;/li&gt;
&lt;li&gt;Review the migration breakdown at a glance.&lt;/li&gt;
&lt;li&gt;Start the migration.&lt;/li&gt;
&lt;li&gt;Resolve the stragglers, so every resource is accounted for.&lt;/li&gt;
&lt;li&gt;Confirm the quality gate: a zero-diff &lt;code&gt;pulumi preview&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&amp;rsquo;ll use &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Pulumi Neo&lt;/a&gt; to do the heavy lifting, but nothing here depends on it. The same flow works with your own coding agent or entirely by hand, because migration status is derived from actual stack state — however the work gets done, the console shows the same progress.&lt;/p&gt;
&lt;h2 id="step-1-find-your-stack-in-pulumi-cloud"&gt;Step 1: Find your stack in Pulumi Cloud&lt;/h2&gt;
&lt;p&gt;Discovered Stacks builds on &lt;a href="https://www.pulumi.com/docs/insights/discovery/"&gt;Discovery&lt;/a&gt;, so the only prerequisite is a scanned &lt;a href="https://www.pulumi.com/docs/insights/discovery/accounts/"&gt;cloud account&lt;/a&gt; — the AWS account holding your CloudFormation stacks.&lt;/p&gt;
&lt;p&gt;Once a scan has run, open the &lt;strong&gt;Stacks&lt;/strong&gt; page and turn on &lt;strong&gt;Show Discovered Stacks&lt;/strong&gt;. Your CloudFormation stacks appear alongside your Pulumi stacks. The project name comes from the CloudFormation stack (&lt;code&gt;payments-api&lt;/code&gt;), and the stack name encodes the account and region it came from, so the same template deployed to two regions shows up as two distinct discovered stacks.&lt;/p&gt;
&lt;h2 id="step-2-plan-the-migration-at-a-glance"&gt;Step 2: Plan the migration at a glance&lt;/h2&gt;
&lt;p&gt;Open the discovered stack&amp;rsquo;s &lt;strong&gt;Migration&lt;/strong&gt; tab. It lays out all 61 resources of &lt;code&gt;payments-api&lt;/code&gt; by status, so you can visualize the migration before touching anything:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;54 Ready&lt;/strong&gt;: mapped to a Pulumi type and confirmed to exist — importable right now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2 Not found&lt;/strong&gt;: mapped, but Discovery couldn&amp;rsquo;t confirm their current state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 No exact match&lt;/strong&gt;: no direct Pulumi type. We&amp;rsquo;ll come back to these in step 4.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every row also pairs the &lt;strong&gt;origin type&lt;/strong&gt; (&lt;code&gt;AWS::S3::Bucket&lt;/code&gt;) with the &lt;strong&gt;Pulumi type&lt;/strong&gt; it maps to (&lt;code&gt;aws:s3/bucket:Bucket&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src="discovered-stack-migration-start.png" alt="The Migration tab of the discovered payments-api stack compared against an empty target: a status summary of 54 Ready, 2 Not found, and 5 No exact match above a resource table with Name, Type, and Status columns."&gt;&lt;/p&gt;
&lt;h2 id="step-3-start-the-migration"&gt;Step 3: Start the migration&lt;/h2&gt;
&lt;p&gt;Most of &lt;code&gt;payments-api&lt;/code&gt; has a direct migration path — 54 of its 61 resources are &lt;strong&gt;Ready&lt;/strong&gt; — so we&amp;rsquo;ll reach for the tab&amp;rsquo;s quick actions and let them do the bulk of the work.&lt;/p&gt;
&lt;p&gt;From the discovered stack&amp;rsquo;s &lt;strong&gt;Actions&lt;/strong&gt; menu, select &lt;strong&gt;Migrate with Neo&lt;/strong&gt;. Neo asks where the code should live — a git repository, a target project and stack, a language — and then works through the migration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fetches the discovered resources and their statuses through the &lt;a href="https://www.pulumi.com/docs/insights/discovery/discovered-stacks/migrate/#use-the-api"&gt;Discovered Stacks API&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Imports the Ready resources in batches with &lt;code&gt;pulumi import&lt;/code&gt;, building up a Pulumi program as it goes.&lt;/li&gt;
&lt;li&gt;Runs &lt;code&gt;pulumi preview&lt;/code&gt; after each batch and reconciles the generated code against the real cloud state.&lt;/li&gt;
&lt;li&gt;Opens a pull request with the program and a migration report.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Because &lt;code&gt;pulumi import&lt;/code&gt; writes state as it runs, the console updates live: statuses flip from &lt;code&gt;Ready&lt;/code&gt; to &lt;code&gt;Migrated&lt;/code&gt; batch by batch, without anyone marking a checkbox.&lt;/p&gt;
&lt;h2 id="step-4-resolve-the-stragglers"&gt;Step 4: Resolve the stragglers&lt;/h2&gt;
&lt;p&gt;That leaves seven rows that need review. In this case, Neo handled them automatically, leaving an annotation on each that records the decision it made:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The 2 Not found rows&lt;/strong&gt; are CloudWatch log groups. Discovery couldn&amp;rsquo;t confirm their state, but they&amp;rsquo;re live, so the import succeeded and the resources were resolved without further inspection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Three No exact match rows&lt;/strong&gt; are inline IAM policies, which our Pulumi AWS Provider imported as part of their parent role. The roles are already migrated, so each policy is marked resolved.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One&lt;/strong&gt; is a Secrets Manager target attachment; Pulumi expresses that link through the database&amp;rsquo;s own configuration, so it&amp;rsquo;s marked resolved once the database is migrated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The last&lt;/strong&gt; is a CDK-generated custom resource that strips the rules from the VPC&amp;rsquo;s default security group. Pulumi models that directly as an &lt;code&gt;aws.ec2.DefaultSecurityGroup&lt;/code&gt;, so there&amp;rsquo;s nothing to import — it&amp;rsquo;s marked resolved.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="discovered-stack-migration-end.png" alt="The same Migration tab compared against the migrated Pulumi stack: every resource now reads Migrated, with Resolved chips on the seven rows that took a manual decision and a Next step column that explains each — imported to Pulumi, captured on the parent role, or nothing left to do."&gt;&lt;/p&gt;
&lt;h2 id="step-5-the-quality-gate"&gt;Step 5: The quality gate&lt;/h2&gt;
&lt;p&gt;With every resource imported or resolved, the migration earns its trust in one final check: a &lt;strong&gt;zero-diff &lt;code&gt;pulumi preview&lt;/code&gt;&lt;/strong&gt;. The generated program, run against the live cloud, proposes no changes.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Resources:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 56 unchanged
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A clean preview means the code matches reality. If it shows a diff, the code gets fixed until it doesn&amp;rsquo;t; the cloud is never modified to make the code look right. And notably, there&amp;rsquo;s no &lt;code&gt;pulumi up&lt;/code&gt; in this story: importing already synced the state to Pulumi Cloud, so the first &lt;code&gt;up&lt;/code&gt; you run is for the first real change you make after the migration.&lt;/p&gt;
&lt;p&gt;That zero-diff preview isn&amp;rsquo;t the finish line, it&amp;rsquo;s a checkpoint you can build on. Imported code is faithful but rarely the code you&amp;rsquo;d write by hand: generated names, repeated blocks, inline configuration. Now that it provably matches the cloud, refactor freely — pull settings into stack config, split the program into modules, collapse repetition into loops, group related resources into components. Rerun &lt;code&gt;pulumi preview&lt;/code&gt; after each change: a clean zero-diff means you reshaped the code without touching the infrastructure. When a refactor shifts a resource&amp;rsquo;s identity (for example, moving it into a new component), an &lt;a href="https://www.pulumi.com/docs/iac/concepts/resources/options/aliases/"&gt;alias&lt;/a&gt; keeps it a no-op.&lt;/p&gt;
&lt;h2 id="where-you-end-up"&gt;Where you end up&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;payments-api&lt;/code&gt; program now lives in your repository, reviewed and merged like any other code. The discovered stack remains as the migration record until you decide to remove the CloudFormation stack. And because progress is derived from real state, if the CloudFormation stack changes later, those changes surface against your Pulumi stack. Migration doesn&amp;rsquo;t have to be all-or-nothing either: for a larger stack, migrate resources progressively and safely by never running &lt;code&gt;pulumi up&lt;/code&gt; while CloudFormation is managing the resources. That&amp;rsquo;s the migration end to end: a CloudFormation stack turned into a Pulumi program you own and manage as code, every resource accounted for and provably in sync.&lt;/p&gt;
&lt;p&gt;The same flow works for Azure Resource Manager deployments, which Discovery models as discovered stacks too. And for Pulumi-hosted Terraform stacks, a &lt;strong&gt;Migration&lt;/strong&gt; tab offers the identical experience, with statuses derived from the Terraform state.&lt;/p&gt;
&lt;p&gt;To go deeper:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/insights/discovery/discovered-stacks/"&gt;Discovered Stacks documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/insights/discovery/discovered-stacks/migrate/"&gt;Migrate from a Discovered Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/iac/guides/migration/migrating-to-pulumi/from-cloudformation/"&gt;Migrating from AWS CloudFormation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>Alejandro Cotroneo</author><category>tutorials</category><category>insights</category><category>import</category><category>aws</category></item><item><title>Discovered Stacks: One Place for All Your Infrastructure</title><link>https://www.pulumi.com/blog/discovered-stacks/</link><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/discovered-stacks/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/discovered-stacks/index.png" /&gt;
&lt;p&gt;Today we&amp;rsquo;re launching &lt;strong&gt;Discovered Stacks&lt;/strong&gt;: Pulumi Cloud now models your AWS CloudFormation stacks and Azure Resource Manager deployments as stacks, right alongside your Pulumi IaC stacks. And when you&amp;rsquo;re ready to bring them under Pulumi management, migration is built in, with every resource tracked until the code provably matches the cloud.&lt;/p&gt;
&lt;h2 id="why-your-infrastructure-doesnt-live-in-one-tool"&gt;Why: your infrastructure doesn&amp;rsquo;t live in one tool&lt;/h2&gt;
&lt;p&gt;Almost nobody&amp;rsquo;s cloud estate is a single technology. There&amp;rsquo;s the CloudFormation that came with the AWS account, the ARM templates from the Azure team, the Terraform from an acquisition, and the Pulumi you&amp;rsquo;re standardizing on. Each tool has its own console, its own grouping, its own idea of state, and no single place shows you everything you run.&lt;/p&gt;
&lt;p&gt;That fragmentation is also why migrations stall. Moving a stack to Pulumi has never been the hard part; &lt;em&gt;knowing where you stand&lt;/em&gt; is. The tracking lives in a spreadsheet, the spreadsheet goes stale the day it&amp;rsquo;s written, and six months later nobody can say which of the 800 resources made it across and which were quietly forgotten.&lt;/p&gt;
&lt;h2 id="nothing-gets-lost"&gt;Nothing gets lost&lt;/h2&gt;
&lt;p&gt;Discovered Stacks gives you confidence that your migration plan or governance efforts will include all resources. This catches a common failure mode where resources are missed by your existing migration scripts or automations. When &lt;a href="https://www.pulumi.com/docs/insights/"&gt;Pulumi Insights&lt;/a&gt; scans your accounts, every CloudFormation stack and ARM deployment becomes a discovered stack, and every resource in it appears as a row with an explicit migration status: ready to migrate, requiring review before migration, or already migrated. Every status is computed from live state on both ends — what Pulumi manages and what the source tool reports — so it&amp;rsquo;s never a stale annotation someone forgot to update.&lt;/p&gt;
&lt;p&gt;Each resource shows its &lt;strong&gt;origin type&lt;/strong&gt; (&lt;code&gt;AWS::S3::Bucket&lt;/code&gt;) next to its &lt;strong&gt;Pulumi type&lt;/strong&gt; (&lt;code&gt;aws:s3/bucket:Bucket&lt;/code&gt;), with the origin properties side by side with Pulumi&amp;rsquo;s view, so you can verify that Pulumi sees exactly what your source tool sees before you change anything. Decisions you make along the way (&lt;em&gt;this resource was deleted, that policy is covered by its parent role&lt;/em&gt;) are recorded by marking the resource resolved: it stays visible to your whole team, deliberately handled rather than quietly forgotten. The spreadsheet is retired.&lt;/p&gt;
&lt;p&gt;&lt;img src="resources-list.png" alt="The Resources grid of a discovered CloudFormation stack in Pulumi Cloud: each row pairs the Pulumi type (aws:sns:Topic) with its origin type (AWS::SNS::Topic), a Managed By column reading CloudFormation, and a provider link out to the resource in the AWS console."&gt;&lt;/p&gt;
&lt;h2 id="migration-on-your-terms"&gt;Migration on your terms&lt;/h2&gt;
&lt;p&gt;When you&amp;rsquo;re ready to migrate, the console is where you plan and build confidence. &lt;strong&gt;Migrate with Neo&lt;/strong&gt; hands the job to &lt;a href="https://www.pulumi.com/docs/ai/"&gt;Pulumi Neo&lt;/a&gt;, which imports the resources, reconciles the generated program, and opens a pull request for review. If you prefer local development, &lt;strong&gt;Generate Import Commands&lt;/strong&gt; gives you the raw materials, and the same API lets your own agents drive the flow.&lt;/p&gt;
&lt;p&gt;Two things hold regardless of the path. Progress is &lt;em&gt;derived&lt;/em&gt;: a resource shows as migrated when it actually exists in the target Pulumi stack, not when someone checks a box. And the quality gate is a &lt;strong&gt;zero-diff &lt;code&gt;pulumi preview&lt;/code&gt;&lt;/strong&gt; — the migration is done when the code demonstrably matches your cloud.&lt;/p&gt;
&lt;p&gt;Terraform stacks whose state you &lt;a href="https://www.pulumi.com/docs/iac/get-started/terraform/terraform-state-backend/"&gt;store in Pulumi Cloud&lt;/a&gt; get the same treatment through a new &lt;strong&gt;Migration&lt;/strong&gt; tab, with statuses derived from the Terraform state.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it&lt;/h2&gt;
&lt;p&gt;Open the &lt;strong&gt;Stacks&lt;/strong&gt; page in &lt;a href="https://app.pulumi.com/"&gt;Pulumi Cloud&lt;/a&gt;, turn on &lt;strong&gt;Show Discovered Stacks&lt;/strong&gt;, and your CloudFormation and ARM estates appear next to your IaC. From there:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read the &lt;a href="https://www.pulumi.com/docs/insights/discovery/discovered-stacks/"&gt;Discovered Stacks documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Follow the &lt;a href="https://www.pulumi.com/blog/discovered-stacks-migrate-cloudformation-to-pulumi/"&gt;step-by-step migration tutorial&lt;/a&gt; to take a CloudFormation stack all the way to Pulumi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&amp;rsquo;d love to hear how it works on your estate — reach out through &lt;a href="https://github.com/pulumi/pulumi-cloud-requests"&gt;Pulumi feedback&lt;/a&gt; or your customer success team.&lt;/p&gt;</description><author>Alejandro Cotroneo</author><category>features</category><category>insights</category><category>pulumi-cloud</category></item><item><title>Scan AWS GovCloud and more partitions with Pulumi Insights</title><link>https://www.pulumi.com/blog/scan-aws-govcloud-china-with-pulumi-insights/</link><pubDate>Tue, 14 Apr 2026 09:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/scan-aws-govcloud-china-with-pulumi-insights/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/scan-aws-govcloud-china-with-pulumi-insights/index.png" /&gt;
&lt;p&gt;Pulumi Insights account scanning now supports every AWS partition. If your workloads run in GovCloud, China, the European Sovereign Cloud, or one of the ISO intelligence-community clouds, you can get the same resource discovery, cross-account search, and AI-assisted insights that commercial accounts already have.&lt;/p&gt;
&lt;h2 id="supported-partitions"&gt;Supported partitions&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;AWS Standard (Commercial)&lt;/li&gt;
&lt;li&gt;AWS GovCloud (US)&lt;/li&gt;
&lt;li&gt;AWS ISO (US)&lt;/li&gt;
&lt;li&gt;AWS ISOB (US)&lt;/li&gt;
&lt;li&gt;AWS ISOF (US)&lt;/li&gt;
&lt;li&gt;AWS ISOE (Europe)&lt;/li&gt;
&lt;li&gt;AWS European Sovereign Cloud&lt;/li&gt;
&lt;li&gt;AWS China&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can also exclude specific regions from discovery — useful when regions are disabled by SCPs or fall outside an audit&amp;rsquo;s scope.&lt;/p&gt;
&lt;p&gt;&lt;img src="aws-partition-picker.png" alt="Choosing an AWS partition when creating an Insights account"&gt;&lt;/p&gt;
&lt;h2 id="set-it-up"&gt;Set it up&lt;/h2&gt;
&lt;p&gt;In the Pulumi Cloud console:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Accounts → Create account&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;AWS&lt;/strong&gt; as the provider.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Add your configuration&lt;/strong&gt;, pick the target partition.&lt;/li&gt;
&lt;li&gt;Supply credentials via a Pulumi ESC environment. The OIDC trust policy uses the partition-appropriate ARN prefix (&lt;code&gt;arn:aws-us-gov:&lt;/code&gt;, &lt;code&gt;arn:aws-cn:&lt;/code&gt;, etc.).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For IAM and ESC setup, see the &lt;a href="https://www.pulumi.com/docs/insights/discovery/accounts/"&gt;Insights accounts docs&lt;/a&gt;. Log in to &lt;a href="https://app.pulumi.com/"&gt;Pulumi Cloud&lt;/a&gt; to get started.&lt;/p&gt;</description><author>Alejandro Cotroneo</author><category>insights</category><category>aws</category><category>features</category><category>cloud-engineering</category></item><item><title>Enforce AWS Organizations Tag Policies with Pulumi</title><link>https://www.pulumi.com/blog/aws-organizations-tag-policies/</link><pubDate>Thu, 20 Nov 2025 10:00:00 -0800</pubDate><guid>https://www.pulumi.com/blog/aws-organizations-tag-policies/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/aws-organizations-tag-policies/index.png" /&gt;
&lt;p&gt;Tags are the foundation of cloud governance, enabling cost allocation, ownership tracking, compliance reporting, and automation across your AWS infrastructure. Yet missing or inconsistent tags remain one of the most common governance challenges. Manual tag enforcement is error-prone, and discovering missing tags after deployment means your cost reports and compliance audits are already operating with incomplete data.&lt;/p&gt;
&lt;p&gt;Today, we&amp;rsquo;re excited to announce a new pre-built policy pack created in partnership with AWS: &lt;strong&gt;AWS Organizations Tag Policies&lt;/strong&gt;. This pack validates your infrastructure as code against tag policies configured in AWS Organizations, blocking deployments when required tags are missing and shifting tag governance left into your development workflow. Define your tag requirements once in AWS Organizations and enforce them consistently across all your Pulumi deployments.&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;p&gt;The new policy pack integrates directly with your AWS Organizations Tag Policies as the single source of truth. No separate policy configuration or custom code required. When you run &lt;code&gt;pulumi up&lt;/code&gt;, the pack retrieves your tag requirements from your AWS organization and validates that every resource has the required tags.&lt;/p&gt;
&lt;p&gt;Start by enabling the pack in advisory mode to surface tagging violations in Pulumi Cloud&amp;rsquo;s &lt;a href="https://www.pulumi.com/docs/insights/policy/policy-findings/"&gt;Policy Findings&lt;/a&gt; hub without blocking deployments. This collaborative workspace allows your team to triage, prioritize, and systematically remediate missing tags. Once your infrastructure is compliant, switch to mandatory mode to prevent future non-compliant deployments.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting started&lt;/h2&gt;
&lt;p&gt;The pack works with both AWS Classic and AWS Native Pulumi providers, covering the full range of taggable AWS resources. To get started:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Configure tag policies&lt;/strong&gt; in AWS Organizations following the &lt;a href="https://docs.aws.amazon.com/organizations/latest/userguide/enforce-required-tag-keys-iac.html"&gt;AWS documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grant required permissions&lt;/strong&gt; by adding the &lt;code&gt;resourcegroupstaggingapi:ListRequiredTags&lt;/code&gt; permission to the IAM role or user that runs your Pulumi deployments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable the pack in Pulumi Cloud&lt;/strong&gt;:
&lt;ol&gt;
&lt;li&gt;From within your organization, navigate to the &lt;strong&gt;Policies&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Under Policy Packs, select the &lt;strong&gt;Available&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;AWS Organizations Tag Policies&lt;/strong&gt; and select &lt;strong&gt;Add to organization&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;From the Organizations tab, apply the policy to a Policy Group&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configure enforcement level&lt;/strong&gt;: Set to advisory for warnings or mandatory to block non-compliant deployments.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Within minutes, every Pulumi deployment in your organization will validate tag compliance, ensuring that no resources are created without required tags.&lt;/p&gt;
&lt;h2 id="try-it-today"&gt;Try it today&lt;/h2&gt;
&lt;p&gt;The AWS Organizations Tag Policies policy pack is now available to all Pulumi Team and Enterprise customers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/insights/policy/integrations/aws-organizations-tag-policies/"&gt;Get started with the integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/organizations/latest/userguide/enforce-required-tag-keys-iac.html"&gt;Learn about enforcing tag policies with AWS Organizations Tag Policies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://app.pulumi.com/signup"&gt;Sign up for Pulumi Cloud&lt;/a&gt; if you&amp;rsquo;re new to Pulumi&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.pulumi.com/"&gt;Join the Community Slack&lt;/a&gt; to share feedback&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&amp;rsquo;re excited to partner with AWS on this capability and help organizations proactively enforce tag governance. Give it a try and let us know what you think!&lt;/p&gt;</description><author>Alejandro Cotroneo</author><category>aws</category><category>pulumi-cloud</category><category>policy-as-code</category><category>crossguard</category><category>features</category><category>governance</category><category>compliance</category></item><item><title>Policy Findings Hub: Move From Alert Fatigue to Action</title><link>https://www.pulumi.com/blog/policy-issue-management/</link><pubDate>Wed, 05 Nov 2025 00:03:00 +0000</pubDate><guid>https://www.pulumi.com/blog/policy-issue-management/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/policy-issue-management/index.png" /&gt;
&lt;p&gt;For platform and security teams, enabling robust cloud scanning often creates a new problem: an unmanageable firehose of policy alerts. Identifying a violation is only the first step. Without a system to manage the lifecycle of these findings, teams are quickly overwhelmed, leading to prioritization paralysis and a perpetually growing backlog.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;&lt;a href="https://www.pulumi.com/docs/insights/policy/policy-findings/"&gt;Policy Findings&lt;/a&gt;&lt;/strong&gt; hub in Pulumi Cloud is the solution to this alert fatigue. It&amp;rsquo;s a purpose-built, collaborative workspace that turns a noisy list of violations into organized, actionable tasks. The hub brings clarity and structure to the compliance process, guiding teams from initial discovery to a verified fix.&lt;/p&gt;
&lt;h2 id="from-raw-data-to-actionable-insights"&gt;From Raw Data to Actionable Insights&lt;/h2&gt;
&lt;p&gt;The Policy Findings hub is designed with distinct views for every stakeholder involved in the governance lifecycle.&lt;/p&gt;
&lt;h3 id="1-the-overview-tab-a-dashboard-for-leaders"&gt;1. The Overview Tab: A Dashboard for Leaders&lt;/h3&gt;
&lt;p&gt;For a platform lead or security manager, the goal is to understand the big picture. The Overview tab provides a high-level dashboard of your organization&amp;rsquo;s compliance health, answering key questions at a glance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is our overall resource compliance score?&lt;/li&gt;
&lt;li&gt;Are we trending in the right direction?&lt;/li&gt;
&lt;li&gt;Which parts of our cloud infrastructure (stacks, accounts, etc.) carry the most risk?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This view helps leadership track progress and make data-driven decisions about where to focus engineering efforts.&lt;/p&gt;
&lt;h3 id="2-the-compliance-tab-the-auditor-and-infosec-workspace"&gt;2. The Compliance Tab: The Auditor and Infosec Workspace&lt;/h3&gt;
&lt;p&gt;For the infosec members and auditors, context is everything. Simply listing thousands of violations is not helpful. The Compliance tab provides a policy-centric view, grouping all findings by the specific control they violated (e.g., a specific rule within CIS or NIST).&lt;/p&gt;
&lt;p&gt;This is crucial when preparing for an audit or assessing adherence to a specific security framework, as it allows you to &lt;a href="https://www.pulumi.com/blog/policy-packs-cis-nist-pci/#more-than-just-detection-the-complete-governance-lifecycle"&gt;see exactly where you are compliant and where you have gaps&lt;/a&gt;, control by control.&lt;/p&gt;
&lt;h3 id="3-the-issues-tab-the-teams-daily-workspace"&gt;3. The Issues Tab: The Team&amp;rsquo;s Daily Workspace&lt;/h3&gt;
&lt;p&gt;This is the space where insight is turned into action. The Issues tab is a collaborative triage board designed for the day-to-day workflow of platform and development teams. It provides the full toolset needed to manage the lifecycle of an issue from start to finish:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Triage and Prioritize:&lt;/strong&gt; Filter issues by severity, resource type, or policy to focus on what matters most. Set a priority level from P0 (critical) to P4 (low).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Assign Ownership:&lt;/strong&gt; Assign issues to specific team members to ensure clear ownership and accountability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manage Lifecycle:&lt;/strong&gt; Mark an issue as &amp;ldquo;Ignored&amp;rdquo; with a justification. This is a critical workflow for acknowledging intentional exceptions, which cleans up your dashboard and allows the team to focus on legitimate issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And for the most critical part of the workflow — the fix itself — we&amp;rsquo;ve integrated our AI agent, &lt;strong&gt;&lt;a href="https://www.pulumi.com/product/neo/#video"&gt;Pulumi Neo&lt;/a&gt;&lt;/strong&gt;, directly into this view.&lt;/p&gt;
&lt;p&gt;After selecting one or more issues, your team can assign the task to Neo. It will analyze the violations and automatically generate a pull request with the necessary code changes. For unmanaged resources, Neo will even generate the code to import them into Pulumi and apply the fix. This turns a complex manual task into a simple review-and-merge process, allowing your team to finally burn down the backlog.&lt;/p&gt;
&lt;div class="my-4"&gt;
&lt;video class="flex outline-none rounded-lg w-full" title="Managing policy findings in Pulumi Cloud"
controls
loop &gt;
&lt;source src="findingsclipblog.mp4" /&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;h2 id="turning-alerts-into-action"&gt;Turning Alerts into Action&lt;/h2&gt;
&lt;p&gt;Effective governance goes beyond identifying violations. It requires a structured system that turns every finding into a clear and trackable path to resolution. The new Policy Findings hub provides that end-to-end workflow, from visibility to accountability to automated remediation.&lt;/p&gt;
&lt;p&gt;By organizing policy data into meaningful views and integrating Pulumi Neo directly into the issue management process, teams can move past alert fatigue and focus on what matters most: fixing problems quickly and maintaining continuous compliance.&lt;/p&gt;
&lt;p&gt;This new experience is now available. Navigate to the &lt;strong&gt;Policies &amp;gt; Findings&lt;/strong&gt; tab in the Pulumi Cloud to explore your new compliance dashboard and start turning alerts into action.&lt;/p&gt;
&lt;h2 id="try-pulumi-policies"&gt;Try Pulumi Policies&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Ready to try these features?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.pulumi.com/signup"&gt;Sign up for Pulumi Cloud&lt;/a&gt; and start a Neo task&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pulumi.com/docs/insights/policy/get-started/"&gt;Read the Get Started guide&lt;/a&gt; to manage compliance across your cloud infrastructure&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.pulumi.com/"&gt;Join the Community Slack&lt;/a&gt; to share feedback on the new features&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For complete documentation, visit our &lt;a href="https://www.pulumi.com/docs/insights/policy/"&gt;Policies documentation&lt;/a&gt;.&lt;/p&gt;</description><author>Alejandro Cotroneo</author><author>Arun Loganathan</author><category>pulumi-cloud</category><category>policy-as-code</category><category>audit-policies</category><category>compliance</category><category>governance</category><category>pulumi-neo</category><category>infosec</category></item><item><title>Policy Comes to Team and Enterprise, with New Out-of-the-box Policies and Management Experience</title><link>https://www.pulumi.com/blog/pulumi-policy-mgmt-launch/</link><pubDate>Wed, 17 Sep 2025 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/pulumi-policy-mgmt-launch/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/pulumi-policy-mgmt-launch/index.png" /&gt;
&lt;p&gt;Pulumi’s Infrastructure as Code has included a powerful policy engine from day one. Over the past year, we’ve been enhancing it significantly to provide stronger governance for modern cloud platforms. Until now, these capabilities were limited to our Business Critical tier. Today, we’re excited to announce that &lt;a href="https://www.pulumi.com/docs/insights/policy-as-code/"&gt;policy guardrails&lt;/a&gt; are now available to all Team and Enterprise customers. Alongside this, we’re launching a redesigned policy management experience and introducing out-of-the-box policy packs that make it easier than ever to secure, govern, and optimize your cloud environments—even when powered by AI agents like &lt;a href="https://www.pulumi.com/blog/pulumi-neo/"&gt;Pulumi Neo&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="policy-as-guardrails-for-ai-infrastructure"&gt;Policy as Guardrails for AI Infrastructure&lt;/h2&gt;
&lt;p&gt;As developer velocity accelerates, AI agents like Neo are helping teams create and manage infrastructure at unprecedented speed. That speed creates a governance challenge: how do you ensure security, compliance, and cost-effectiveness without slowing developers down?&lt;/p&gt;
&lt;p&gt;Policy guardrails provide the answer. Pulumi’s Policy as Code (PaC) framework applies DevOps best practices to governance, letting you codify rules, test them through pull requests, and version them alongside your infrastructure. With policies in place, you can ensure that every change stays within your organization’s standards, whether it is a human developer or Neo making a change.&lt;/p&gt;
&lt;h2 id="what-makes-pulumi-policy-different"&gt;What Makes Pulumi Policy Different&lt;/h2&gt;
&lt;p&gt;Unlike many other policy solutions, Pulumi Policy uses general-purpose programming languages such as TypeScript and Python rather than restrictive DSLs or YAML. This unlocks richer and more flexible capabilities, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conditional logic&lt;/strong&gt; to codify your organization&amp;rsquo;s nuanced rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reusable functions and abstractions&lt;/strong&gt; to create a shared library of policies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unit tests&lt;/strong&gt; to validate policy behavior before rollout.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With today’s updates, this foundation is easier to adopt and scale across your teams than ever before.&lt;/p&gt;
&lt;h2 id="new-simplified-experience"&gt;New Simplified Experience&lt;/h2&gt;
&lt;p&gt;While Pulumi Policy has always allowed you to enforce compliance using TypeScript and Python, the existing workflow could be cumbersome—discovering policies required switching between the console and CLI, and applying them involved multiple steps.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve removed that friction to provide the seamless guardrails needed for this high-velocity, AI-driven world. The new experience is built around a streamlined, in-console workflow for discovering, applying, and managing your policies.&lt;/p&gt;
&lt;h3 id="in-console-discoverability"&gt;In-Console Discoverability&lt;/h3&gt;
&lt;p&gt;We are making it easier to find and understand policy packs. You can now browse a rich set of pre-built policy packs directly within the Pulumi Cloud console—no CLI or context switching required.&lt;/p&gt;
&lt;p&gt;You’ll find:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A rich browsing experience:&lt;/strong&gt; See all available policy packs in one place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detailed information:&lt;/strong&gt; Each pack comes with a clear description of the policies included.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organization-approved packs:&lt;/strong&gt; Org admins can curate a list of approved policy packs, ensuring your teams—and AI agents like Neo—are using a vetted set of policies.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="new-pre-built-policy-packs"&gt;New Pre-Built Policy Packs&lt;/h3&gt;
&lt;p&gt;To help you establish guardrails immediately, we have authored several &lt;a href="https://www.pulumi.com/docs/insights/pre-built-packs/"&gt;pre-built policy packs&lt;/a&gt;. We are excited to highlight two that are available today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pulumi Best Practices:&lt;/strong&gt; A foundational set of recommended governance and security controls that serves as a strong starting point for any organization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HITRUST CSF v11.5:&lt;/strong&gt; Provides predefined controls that help align cloud resources with HITRUST CSF requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="streamlined-policy-management-and-application"&gt;Streamlined Policy Management and Application&lt;/h3&gt;
&lt;p&gt;The new policy management experience dramatically simplifies policy application:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intuitive Interface:&lt;/strong&gt; Browse, select, and apply policies through a streamlined workflow using &lt;strong&gt;Policy Groups&lt;/strong&gt; to bundle related policies and apply them to your stacks or cloud accounts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Expanded Scale:&lt;/strong&gt; We&amp;rsquo;ve eliminated the 4,000 stack UI limit on policy groups, allowing you to scale policies across your entire infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Granular Enforcement:&lt;/strong&gt; Configure the enforcement level (&lt;code&gt;advisory&lt;/code&gt; or &lt;code&gt;mandatory&lt;/code&gt;) for policies to either warn developers or block non-compliant deployments entirely.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="preventative-and-audit-approaches"&gt;Preventative and Audit Approaches&lt;/h3&gt;
&lt;p&gt;Pulumi Policy supports two complementary approaches to governance.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preventative policies&lt;/strong&gt;: Block non-compliant deployments during &lt;code&gt;pulumi up&lt;/code&gt;, providing real-time guardrails for developers and AI agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit policies&lt;/strong&gt;: Continuously scan existing resources for ongoing compliance monitoring, giving you a complete picture of your cloud security posture.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This dual approach ensures new deployments meet standards while maintaining visibility across your entire infrastructure. Learn more in our &lt;a href="https://www.pulumi.com/docs/insights/preventative-vs-audit-policies/"&gt;Preventative vs. Audit Policies&lt;/a&gt; guide.&lt;/p&gt;
&lt;h2 id="how-to-get-started"&gt;How to Get Started&lt;/h2&gt;
&lt;p&gt;Getting started with the new policy management experience is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Browse Policy Packs:&lt;/strong&gt; Navigate to the Policies tab in your Pulumi Cloud console to discover pre-built policy packs like Pulumi Best Practices and HITRUST CSF. Learn more about &lt;a href="https://www.pulumi.com/docs/insights/policy-as-code/"&gt;Policy as Code&lt;/a&gt; configuration and setup.
&lt;img src="policy-management-1.png" alt="Policy Packs Browser"&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Choose Your Approach:&lt;/strong&gt; Decide whether you need preventative policies (to block non-compliant deployments during &lt;code&gt;pulumi up&lt;/code&gt;) or audit policies (for continuous compliance monitoring across all cloud resources).
&lt;img src="policy-management-3.png" alt="Preventative Policy Overview"&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create Policy Groups:&lt;/strong&gt; Set up policy groups to bundle related policies and apply them to your stacks or cloud accounts.
&lt;img src="policy-management-4.png" alt="Policy Group Configuration"&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configure Enforcement:&lt;/strong&gt; Set enforcement levels (advisory, mandatory, or remediate) for each policy based on your requirements.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="now-available-to-team-and-enterprise-customers"&gt;Now Available To Team and Enterprise Customers&lt;/h2&gt;
&lt;p&gt;To ensure every organization can build with confidence, these policy management enhancements and the &lt;code&gt;pulumi-best-practices&lt;/code&gt; policy packs are &lt;strong&gt;now available to Team and Enterprise customers&lt;/strong&gt;. Checkout our &lt;a href="https://www.pulumi.com/pricing"&gt;pricing&lt;/a&gt; page for more information.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Governance doesn’t need to be a roadblock—it can be a foundation that accelerates innovation. With enhanced policy management and ready-to-use guardrails, Pulumi helps your teams and AI agents like Neo move fast while staying secure, compliant, and cost effective.&lt;/p&gt;
&lt;p&gt;Try the new experience in Pulumi Cloud today, and let us know what you think in the &lt;a href="https://slack.pulumi.com/"&gt;Pulumi Community Slack&lt;/a&gt;.&lt;/p&gt;</description><author>Luke Ward</author><author>Dan Biwer</author><author>Alejandro Cotroneo</author><category>pulumi-cloud</category><category>policy-as-code</category><category>crossguard</category><category>features</category><category>user-experience</category><category>pulumi-neo</category><category>ai</category></item></channel></rss>