AWS re:Invent 2022 - Take these open-source tools on your AWS adventure (BOA202)
AWS re:Invent 2022 - Take these open-source tools on your AWS adventure (BOA202)
You’ve set out on a grand adventure to learn, build and expand on AWS. Like any good adventure, it has its challenges. Time to gear up! Grab your best tools and gear to help you on your way. In this session, have a look at open-source tools that can help make your AWS adventure easier. See something for security and permissions, something for cost management, and a few more things for building in the cloud—tools like Infracost, IAMLive, and more.
ABOUT AWS Amazon Web Services (AWS) hosts events, both online and in-person, bringing the cloud computing community together to connect, collaborate, and learn from AWS experts.
AWS is the world’s most comprehensive and broadly adopted cloud platform, offering over 200 fully featured services from data centers globally. Millions of customers—including the fastest-growing startups, largest enterprises, and leading government agencies—are using AWS to lower costs, become more agile, and innovate faster.
#reInvent2022 #AWSreInvent2022 #AWSEvents
Content
0.845 -> - [Darko] Welcome to this talk,
3.99 -> taking your open source tools
5.88 -> or taking these open source
tools on your AWS adventure,
9.72 -> and thank you. Goodbye.
11.528 -> (chuckles)
12.361 -> That's all the slides we have,
13.68 -> just so you know.
14.951 -> - I worked on those.
16.061 -> (both chuckle)
17.484 -> - We will not bore you with slides.
19.021 -> First of all, this is a Friday crowd.
20.85 -> Thank you all for devoting
your Fridays to us.
23.912 -> Woo, yeah Fridays! Yeah!
26.137 -> (audience clapping)
28.65 -> I think we're good now.
29.61 -> That's all I needed for today. Awesome.
32.162 -> So today is in all
seriousness, a presentation.
35.52 -> I can go back to, there we go.
37.44 -> We're gonna be talking about
some open source tools out
39.81 -> there that will help you
on your cloud adventure.
43.02 -> So I'm gonna switch into demo
mode, and please bear with me.
49.59 -> This is something not
usually seen at re:Invent.
52.92 -> I'm overselling it.
54.96 -> So you've woken up, you've realized cloud
59.63 -> is the next next thing, right?
61.86 -> You've set up on your grand
adventure to do cloudy things.
66.57 -> To build, to scale, to
fail, to open S3 buckets,
70.65 -> to stumble with IAM,
73.8 -> stumble with costs,
75 -> and also realize that your
laptop is not the cloud.
79.41 -> So you woke up, but it
is dangerous to go alone.
83.37 -> What do you do? You need to
exit your on-premises cave.
89.1 -> Let's go that way.
90.15 -> And you need to go out into
the wide world of the cloud.
95.73 -> Hello!
96.78 -> - [Curtis] Hello.
98.224 -> - Hello.
99.057 -> (audience clapping)
102.3 -> - Hello.
103.133 -> - Who's that?
104.58 -> - My name is Curtis Evans.
106.53 -> I'm a principal developer
advocate here at AWS.
109.71 -> And as Darko alluded to earlier,
111.12 -> I want to thank you guys so
much for being here on a Friday.
113.43 -> I know you've been here
and had a long adventure,
116.07 -> pracked, packed, somewhat hectic week,
118.249 -> re:Play last night I'm sure.
120.96 -> But again, thank you for being here today.
122.52 -> We really appreciate it.
123.9 -> - Thank you Curtis. And my name is Darko.
126.18 -> I am what they call a developer advocate,
128.28 -> but I used to be something we used to call
130.74 -> system administrator.
Do y'all remember that?
134.82 -> I scream into the camera for
a living, thanks to COVID,
138.15 -> but I'm here now to talk to you about
141.604 -> open source tools, command line,
143.4 -> and everything in between to
help make your cloud adventure
146.49 -> better, safer, faster, and more fun.
150.45 -> So let's sit in our cloud thing here,
154.41 -> if I can hit this button,
and let's take a ride.
158.34 -> We're taking a ride over to
your first cloud steps, right?
162.42 -> You're, you've started doing things,
164.437 -> you started building code,
165.27 -> you started provisioning
EC2 instances, VPC's, users,
167.356 -> policies, cloud formation,
cloud front, API gateways,
171.06 -> Lambda functions...lot of moving things.
176.13 -> What happens when you start
creating a lot of things with
179.16 -> a lot of important data?
181.95 -> Those things can be problematic if
183.96 -> somebody else wants to access them.
186.36 -> So you need to secure them.
188.82 -> But security is a problem.
You need your shield.
193.47 -> You need to protect your resources.
195.21 -> Everything needs to be locked down.
198.72 -> How many of you, raise hands,
when you do some testing when
203.73 -> you start building, how many of you
204.96 -> just use the completely
open policy of whatever?
209.64 -> Don't lie.
210.93 -> - [Curtis] Oooh. Lot of hands.
213.282 -> - Chmod 777.
214.71 -> We also used to do that, right?
217.11 -> You just open everything
to the world because
219.15 -> security is hard. It is.
220.8 -> You have to define exact
things you need to do.
223.26 -> You need to define, oh, my
API call needs to do this.
226.47 -> What is the IAM policy for that.
229.17 -> Or I get a user yell at me,
231.007 -> "Darko, I can't do what I need to do."
235.2 -> So how do you figure that out?
236.91 -> How do you get to shield up
and ready with relative ease?
241.2 -> So we're gonna talk to you
about two open source tools to
244.05 -> help you with that.
245.88 -> And the first one is very
special because there's a
249.69 -> gentleman in the audience here, Ian McKay,
253.02 -> who built this tool and
he came here to heckle me.
256.5 -> So let me give you a scenario.
260.67 -> You want to build a thing, right?
263.769 -> You have your open policy,
list bucket, launch instances,
266.16 -> create users, request route 53 domains,
270.66 -> and your account admin works fine.
272.91 -> But how can you actually
understand or define what your IAM
279.24 -> policy needs to look like for
281.19 -> only a user to do only those things?
285 -> There's always a documentation,
but you know, you,
289.546 -> there's a lot of documentation
out there and sometimes
292.38 -> trying things out can be problematic.
296.19 -> So IAMLIVE, am I
pronouncing that right, Ian?
299.76 -> Is it Okay?
301.222 -> IAMLIVE is a tool that will
basically intercept API calls
305.88 -> made from your laptop to
the cloud and will generate
309.711 -> an IAM policy for you.
313.14 -> Let me show you.
315.393 -> IAMLIVE. Let me actually do this, IAMLIVE.
318.87 -> There's the set any,
boom, this is now running.
325.2 -> If I open up another thing here,
330.27 -> I'm opening up another pane
here and I do AWS, S3, LS.
338.28 -> That won't work. AWS, S3, profile default.
345.734 -> Default.
349.8 -> We depend on so much (indistinct) here.
353.88 -> Can I show config? I can
show config. That's fine.
356.31 -> Vin.
359.73 -> So AWS config.
363.78 -> What did I miss?
364.613 -> What's the problem here?
365.64 -> - [Curtis] Move your profile
before the AWS profile
369.81 -> and then the rest of your command.
372.365 -> - What did I do?
373.249 -> - [Curtis] Try that.
374.407 -> - Oh, the profiles look good, right?
376.11 -> - [Curtis] I think it might be
the location of where it is.
378.175 -> (indistinct murmuring from the audience)
387.51 -> - Profile, profile name?
391.29 -> - [Curtis] Yeah. Make
profile the second parameter
394.41 -> on the command line.
396.038 -> - Ah okay.
397.623 -> Okay. Like this?
400.573 -> - - Profile.
402.456 -> - [Curtis] Yes.
404.28 -> AWS BOA202 admin.
408 -> Unable to parse config file.
410.64 -> Unable to par config file.
Why won't they do it?
414.206 -> (indistinct murmuring from the audience)
417.285 -> - It needs to be prefix to profile?
419.51 -> - [Audience Member] You
have a duplicate line.
421.902 -> Line two and three.
424.619 -> - Line two and three.
Ah, there we go, okay.
427.14 -> So let's try it again.
430.65 -> Ha works beautiful.
434.23 -> - [Curtis] You guys passed
the test. Congratulations.
435.063 -> - There we go.
436.663 -> (audience clapping)
439.14 -> That's what, that was intentional,
442.823 -> but I'm trying to see why
this doesn't work now.
445.72 -> So AWS profile does this, LS.
448.47 -> Ian, am I doing something wrong?
450.816 -> - [Ian] Probably.
451.649 -> - Probably?
452.598 -> (Darko and Curtis laugh)
453.741 -> So what, what's what's
supposed to happen here,
456.083 -> if I do IAMLIVE like this,
and I run a command like this,
460.41 -> the thing upstairs should
generate a policy, but it doesn't.
466.23 -> Well that's a, that's a bummer.
468.782 -> So this tool would intercept
any API call made and just
472.74 -> spit out a policy to do that for you.
475.11 -> But for some reason it doesn't work.
477.87 -> I promise this worked on my laptop,
479.82 -> but it doesn't work anymore.
So let me try something.
482.97 -> IAMLIVE, help, set any, this would be,
487.98 -> oh set any would update the thing.
489.96 -> But there is an option
that needs to do it.
492.42 -> Like it should be like just that.
495.364 -> - [Ian] You need to do
the same profile maybe.
498.158 -> - Maybe same profile.
Okay, so if I do this,
500.329 -> so if, let's do this. IAMLIVE.
501.85 -> Ah, I know why. I know why. Thank you.
504.319 -> IAMLIVE like this,
505.17 -> then go back and then just
without the profile name,
507.51 -> because by default set any
did it on the default profile.
512.46 -> I do this now it doesn't work.
517.083 -> - [Audience Member] Chmod 777.
518.717 -> - Chdmod 777.
519.55 -> (Darko laughs)
522.401 -> - [Curtis] Good suggestion.
524.301 -> - [Audience Member] (indistinct)
526.2 -> - I have to set, I still
have to set it again.
527.91 -> So here's the, here's the thing,
528.81 -> troubleshooting it real time.
531.18 -> Boom, boom, I'm live, set any.
533.82 -> If I do set any, what it'll do,
535.81 -> it'll add the thing to my
config file, hopefully.
540.24 -> - [Audience Member] Oh I
think it's a single dash,
543.295 -> not double dash.
544.193 -> - Let me just see it is
CSM enabled true now.
547.35 -> So that's what it done.
If I do AWS, S3, LS...
551.01 -> Boom. Ha! there we go. You're welcome.
553.858 -> (audience clapping)
556.5 -> So that thing up there is a
policy that gives you permission
560.64 -> to list the bucket. So
if I do something else,
563.555 -> AWS S, let's see, EC2, describe instances.
569.22 -> You get another thing, right?
571.77 -> What's another API call you wanna run?
574.027 -> - [Audience Member] (indistinct)
576.368 -> - What?
577.223 -> - [Audience Member] KMS.
578.409 -> - KMS. What KMS?
579.268 -> Let's do this. Let's do this.
581.61 -> Check this out, check this out.
585.13 -> Check this out.
587.911 -> AWS. KMS.
593.49 -> Can we describe something?
Describe, describe key?
599.19 -> Key ID.
601.41 -> Is there a key ID? Let's
do this. Boom, there we go.
604.474 -> It has added KMS list
keys and describe keys.
607.945 -> It has added those things in that policy.
610.2 -> Now, if I want to add a
policy, create a policy,
612.48 -> I can just copy paste that
and do it for my user.
615.57 -> Now, most likely your users just don't
618.48 -> do use the CLI all the time,
620.4 -> but this should intercept basically
622.77 -> any call you try to make.
624 -> So think about all of
the things you would do,
627.54 -> things your your users would need to do.
629.43 -> And this, it's relatively easy to
631.41 -> create this single user
policy to help you do that.
636.348 -> IAMLIVE is just a blessing
for these things because
638.25 -> sometimes some calls require
multiple permissions,
642.54 -> which then require a
lot of troubleshooting.
646.23 -> So this is a great proactive
way to create good, decent,
651.39 -> IAM policies for your users.
654.87 -> But what about when you
already have a policy in place?
660.81 -> And your user complains
that they cannot do a thing?
665.25 -> I will let my good
buddy Curtis talk to you
667.11 -> about the next security tool.
669.3 -> We still at security, right? Run draft.
672.571 -> Next security tool to
help do something else.
674.58 -> So why, what is this tool and
what, why, why do we use it?
677.79 -> - [Curtis] Thanks Darko.
679.98 -> Thank you for being here as well, Ian.
681.42 -> Is Nolan Gohan in a house by the way?
684.18 -> I'm about to talk about his tool. Not in.
687.27 -> - He's not in, he's not in.
688.2 -> - Cool. No worries.
689.55 -> So I'm gonna talk to you
guys about Access Undenied.
692.91 -> To the point Darko just
made, we've already
695.13 -> got an open source tool
that's gonna give us
697.17 -> the ability to understand
what permissions that users,
700.647 -> entities, what have you, are gonna need
702.93 -> in order to do things.
704.743 -> Access denied is one of
those tools that's gonna
707.88 -> give you an opportunity
to discover just that.
711.48 -> If there was an operation by way of an API
713.49 -> that you wanna run and
the user is not allowed to
716.43 -> do so by way of deny,
718.17 -> this is an opportunity to
parse that information,
720.72 -> do some quick analysis, and
be able to fix it on the fly.
724.89 -> With the help of my
trusted CIS admin here.
727.791 -> Darko, let's create a situation
where, say I'm a user,
731.52 -> I've just been given access to
an AWS account and I wanna do
734.85 -> something simple like just
go out and list buckets
737.34 -> with an S3 API call.
743.46 -> - [Darko] You know what.
744.475 -> - What do we have there?
745.308 -> - [Darko] We can do it now.
746.401 -> - Sorry?
747.234 -> - [Darko] We can't do
it. We list the bucket.
748.966 -> - Remove the profile and let's try.
750.847 -> (Darko chuckles)
751.68 -> - [Darko] We tested this out before.
752.513 -> - We're gonna go back and do a...
753.655 -> - [Darko] We forgot to remove the policy.
754.488 -> (Darko laughs)
755.321 -> - No worries.
756.154 -> - So let's do it again.
758.43 -> S IAM profile.
763.11 -> - [Curtis] Yeah, so what we're gonna do
763.943 -> is basically reset the privileges for
765.93 -> the BOA202 user so that they
have no ability to go out
770.76 -> and do a list of buckets.
773.183 -> - Can I delete,
774.807 -> can I delete the policy
version from the command line?
777.48 -> - [Curtis] Sure. Just, just as easy.
780.334 -> - Just S3 list bucket?
784.879 -> - [Curtis] List policy.
785.712 -> - List policy.
791.57 -> No, no, no.
794.25 -> So smoke and mirrors.
795.39 -> Imagine this user cannot
access this bucket.
798.75 -> There's an access denied 404,
801.231 -> 403, doesn't work for them.
802.56 -> - [Curtis] Yep.
803.845 -> - Right? And the user
calls Curtis up says,
805.207 -> "Curtis, my thing doesn't
work. Figure it out."
810.72 -> How do we figure it out?
811.83 -> - So we're gonna send that
user to the administrator.
815.43 -> We're gonna have the
administrator be aware of
818.1 -> what the problem is.
819.9 -> As you know, anytime you have an
821.67 -> access denied issue that's gonna be
824.221 -> written to a CloudTrail trail event.
826.8 -> With Access Undenied the administrator's
829.11 -> gonna have the ability to do an analysis
831.21 -> or run an analyzed command by
way of extracting that JSON
835.89 -> data on that particular
event and get some additional
839.37 -> information about what the
problem is and how they can go
842.4 -> about resolving it.
844.397 -> So with that Darko, why
don't we go ahead and we,
846.48 -> we've already taken the JSON
out of the CloudTrail event
849.51 -> and now we're gonna use
the Access Undenied utility
852.45 -> to go and analyze it.
853.86 -> - So we have a file
here called "file.JSON".
857.953 -> This file is just a trace
from CloudTrail, right?
862.5 -> So if we do Access Undenied
and pass it on an events file,
868.17 -> file.JSON.
869.52 -> If we do this...
876.03 -> we could not find the
reason for access denied.
878.483 -> (Darko laughs)
880.329 -> - [Curtis] Are you running the profile
881.31 -> that we needed for that one?
883.694 -> - This, oh yes. Profile, right?
885.3 -> It is a profile. It is, we're
using the correct profile.
888.3 -> Are we,
889.741 -> - [Audience Member] (indistinct)
895.28 -> I, I think actually the,
896.85 -> this doesn't matter here
because we are analyzing this
899.31 -> locally, so it doesn't,
900.48 -> - [Curtis] Well you're gonna
have to be the admin user
903.796 -> in order to be able to parse the uh...
906.289 -> - So this is, this is demo number two.
909.478 -> We have two more to go.
911.738 -> (Darko laughs)
913.804 -> I think I said people,
this is easy tools, right?
917.469 -> - [Audience Member] (indistinct)
919.44 -> - Yeah, it most likely
looks at the live profile.
922.096 -> So what, what, what, what's
happening right now...
925.2 -> But it should analyze the file, no?
926.202 -> Events file.
927.93 -> File.
930.749 -> - [Audience Member] (indistinct)
932.07 -> - Yeah, it opens the file.
933.84 -> Right? There we go. So that all works.
936.96 -> File.JSON. Are we in the
correct directory? We are.
940.8 -> So there are no reasons for access denied.
945.922 -> - [Audience Member] Do you
think it's already allowed?
947.771 -> - It's all, well the
thing is, it's allowed.
949.786 -> So that's why we, we need to figure out
951.214 -> how to remove the policy.
952.282 -> So are you gonna figure out
how to remove the policy for a
954.66 -> user with us together?
955.68 -> Yes. Okay, let's do this.
960.57 -> Profile. BOA Admin. IAM.
964.35 -> How do we do remove? Remove
roll from instance profile.
967.86 -> Remove, delete user permissions battery.
973.26 -> Can we do, I, I don't
know, detach roll policy?
978.42 -> - [Curtis] Detach. Yeah
979.253 -> - We are actually adding put,
981.34 -> we're adding, put user policy.
983.64 -> We're adding, literally adding
a policy to a user, right?
988.257 -> So we are,
990.39 -> you are doing this and then
username is BOA something,
994.2 -> - [Curtis] 202-user.
996.049 -> - 202-user.
996.93 -> And then policy name is S3
list book, the list policy.
1001.967 -> And then we need to do a policy
file, policy document file,
1007.04 -> da da da and then policy JSON.
1009.98 -> Now this will add this thing
to that document, but I,
1012.26 -> I don't know how to remove
this thing. That's the problem.
1016.428 -> If I...I'll delete the file.
1018.86 -> Yeah, I'm just gonna be,
1020.27 -> oh actually you know this policy .JSON...
1025.16 -> Deny.
1026.66 -> So when the user complains
why they can't do it,
1030.05 -> it's because of you.
1032.42 -> So I'll do this.
1034.674 -> - [Audience Member] It
is delete your policy.
1037.094 -> - It's delete your policy?
1038.15 -> - [Curtis] Yeah I think it's (indistinct)
1038.983 -> - Okay, let's try that.
1042.53 -> Can we do profile
1046.58 -> BOA202, IAM,
1050.58 -> delete user policy,
1052.82 -> user name,
1057.38 -> name, what is the user, BOA202 user,
1061.28 -> and then policy name S3.
1068.835 -> - [Curtis] This policy.
1069.873 -> - This policy?
1073.16 -> Okay, let's try it again.
1075.236 -> (Darko chuckles)
1077.721 -> Let's do this from the, from the top.
1079.163 -> BOA user still works.
1081.98 -> We didn't delete the policy,
but I do, like wait...
1087.23 -> profile, admin, IAM,
1092.737 -> delete user policy...
1098.09 -> User name, BOA202.
1104.382 -> User policy.
1107.931 -> - [Audience Member] (indistinct)
1110.258 -> - Yeah. Yeah.
1111.181 -> So I think that would be
great, but it should actually,
1113.012 -> this tool should show us this.
1114.225 -> Do this, BOA202 admin,
1118.814 -> (audience murmuring)
1123.259 -> I'll use the dash name.
Okay, that's consistency.
1128.07 -> 202, user.
1131.063 -> - [Curtis] Dash user, yeah.
1132.53 -> - Policy name. And you can
see that it has a few policy.
1136.497 -> S3,
1138.56 -> list policy.
1141.17 -> Does this work?
1143.417 -> - [Audience Member] Yeah.
1144.641 -> - No such user policy. There we go.
1145.722 -> So this user actually technically
should be able to do this,
1147.68 -> shouldn't be able to do
this. Okay, beautiful.
1150.02 -> It cannot do it.
1151.52 -> Winner, winner chicken dinner.
1154.67 -> Okay, so let's try this.
1155.78 -> Access denied, once again.
1160.22 -> Boom. See.
1161.15 -> - [Curtis] There we go.
1162.536 -> (audience clapping)
1163.37 -> - Don't clap.
1165.29 -> You are, you are endorsing
our bad preparation.
1168.68 -> Do not clap.
1170.752 -> - [Curtis] Gotta love the
ability to respond on the fly.
1173.754 -> Well done, Darko.
1175.34 -> - What is this now Curtis?
1177.512 -> - [Curtis] All right, so we have now
1179.501 -> identified that there
is a problem related to
1181.37 -> this user unable to go
out and do something
1185.09 -> as simple as a list bucket.
1187.52 -> The administrator has taken
the JSON entry from the cloud
1190.61 -> trail event, use Access
Undenied to analyze it,
1193.79 -> and now has the ability by
way of this output from the
1197.66 -> analysis to say simply go
and do a list all my buckets,
1202.432 -> permissions policy for this user.
1204.74 -> - [Darko] Yeah, exactly.
1206.512 -> - With that we can go and,
1208.751 -> and now grant that user this access.
1209.84 -> Notice also too that,
1211.82 -> and Darko alluded at the
very beginning, you know,
1214.07 -> hopefully those hands that
went up earlier about being S3
1217.67 -> star users aren't, you know,
1219.38 -> really into that, because you
wanna be able to always grant
1222.438 -> just principle of lease privilege,
1224.51 -> which is what we're gonna do
here by way of a put policy for
1226.886 -> that user granting those permissions.
1232.02 -> - [Darko] Boa202, user. Okay.
1235.22 -> - User with a U not what a Y.
1237.35 -> - [Darko] Policy name. S3 list policy
1240.68 -> and then policy document,
1241.91 -> it's gonna be file policy JSON.
1245.9 -> - [Audience Member] You
added that (indistinct)
1248.42 -> - Yeah.
1249.44 -> - [Darko] I just change it
right now as he was talking,
1251.12 -> I sneakily changed it to
allow. Okay, so if we,
1254.45 -> if we look at the policy now it is allow,
1256.94 -> and do you think it will work right now?
1259.403 -> - Do a list bucket.
1261.2 -> - [Darko] Do you think it'll work?
1265.288 -> - My man.
1268.91 -> - [Darko] There we go.
1270.115 -> (audience claps)
1271.248 -> - So that's Access Undenied in a nutshell.
1274.22 -> Know that you can also use
this for organizations accounts
1279.268 -> where there may be issues with
service control policies that
1281.15 -> are also creating issues.
1282.26 -> So take a look at Access Undenied.
1284.93 -> - [Darko] Yeah. It's available in GitHub.
1286.845 -> It was made by somebody called Ermetic or,
1288.26 -> but you know, the actual
name of the person?
1289.67 -> - Yeah, actually we're proud to call him a
1291.62 -> member of our AWS community builder.
1293.24 -> So thank, thank you, wherever you are.
1295.833 -> - So I mean, how would you
do this without this tool?
1298.79 -> - Oh boy.
1299.81 -> - Yeah.
1301.312 -> - Management console.
1302.145 -> - Yeah, management.
1302.978 -> You like, did you ever have
a user come to you and says,
1305.217 -> "Hey, my thing doesn't work."
1308.06 -> Right? And you know, that's a problem.
1311.12 -> So you can go through
the management console,
1312.83 -> go to CloudTrail and just scroll
1314.24 -> and just search "deny",
1315.92 -> okay, there's a deny here and you,
1317.96 -> you look for it and you add
a policy and then you find
1322.25 -> another deny, but is that
the old deny or the new deny?
1324.86 -> You don't know.
1325.693 -> So Access Undenied definitely
helps streamline this
1327.677 -> so you don't have to
worry about that as much.
1332.388 -> Okay, time to move on.
1336.05 -> We have finally our shield.
1340.37 -> We have figured out security,
1341.99 -> haven't we, in the last 20 minutes.
1345.17 -> Time to move on to the next
part of your cloud adventure.
1348.47 -> And once you figure out security,
1350.45 -> you start building things
in the cloud, right?
1352.4 -> You, you go and Lambda functions,
S3 buckets, permissions,
1356.93 -> and you give people correct
permissions and they start
1359 -> building, cloud formation.
1361.214 -> I don't know. And, and the
things start getting dark.
1365.93 -> They're dark because you start to
1368.154 -> lose visibility on, you know,
1369.62 -> you can build fast in the cloud,
1372.47 -> but it can also be quite
expensive in the cloud, right?
1375.5 -> So you need to be able
to manage your cost.
1377.54 -> Let's say, do people use
infrastructures code?